Manipulação de matriz dinâmica do PowerBuilder
-
22-09-2019 - |
Pergunta
string array[]
long lBound, uBound
lBound = LowerBound(array[]) // = 1, empty array value
uBound = UpperBound(array[]) // = 0, empty array value
array[1] = 'Item 1'
array[2] = 'Item 2'
array[3] = 'Item 3'
lBound = LowerBound(array[]) // = 1
uBound = UpperBound(array[]) // = 3
array[3] = '' //removing item 3
lBound = LowerBound(array[]) // = 1, still
uBound = UpperBound(array[]) // = 3, still (but array[3] is nulled?
Eu acho que a linha 'Array [3]' está errada, mas acho que li que isso deveria remover a célula da matriz.
Qual seria a maneira certa de remover uma célula de matriz? Depende do tipo de objeto? (String vs número vs objeto)
Ou
Pode -se manipular o valor superior para fazê -lo funcionar?
isto é, depois de remover o item 3, quero que a parte superior ou o comprimento do Arrayle seja 2, pois isso é logicamente correto.
Solução
A [ME] Referência é um tipo de função no SharePoint / Office.Use o seguinte link para ver a documentação oficial em fórmulas e funções.Esta não é exatamente a comparação lado a lado que você está procurando, mas, detalhe as coisas razoavelmente bem.
Especificamente falando, se você entrar em Informações |Eu função você verá o que eles listaram para explicar como [eu] funciona.Eles explicam que "... retorna o nome de usuário atual".também.
Outras dicas
O PowerBuilder realmente não tem boas funções de manipulação de matriz construídas (que eu conheço).
Você pode alcançar o que está tentando fazer copiando os valores que deseja manter para uma nova matriz ilimitada.
Por exemplo
int i
string array3[] = {'Item 1', 'Item 2', 'Item 3'}, array2[]
for i = 1 to 2
array2[i] = array3[i]
next
UpperBound(array2[]) // = 2
No seu exemplo, você está removendo apenas o valor mais recente - isso pode ser feito ainda mais simplesmente copiando toda a matriz para uma nova matriz menor e limitada:
string array3[] = {'Item 1', 'Item 2', 'Item 3'}, array2[2]
array2 = array3
UpperBound(array2[]) // = 2
Quando eu estava escrevendo um comentário para a resposta de Dan, comecei a pensar no que uso, já que não gosto das listas da PFC. O que eu uso é um armazenamento de dados, que, se você pensa sobre isso da maneira certa, é como uma lista em esteróides.
Em vez de copiar a matriz, se você precisar acompanhar um limite superior em mudança da matriz (por exemplo, se você estiver tentando usá -lo como algo como uma pilha), por que não apenas manter uma variável inteira separada, indicando a última real Índice do elemento? Parece muito mais simples e mais eficiente do que as soluções de cópia sugeridas acima!