4D v16.3

Arrays e ponteiros

Página Inicial

 
4D v16.3
Arrays e ponteiros

Arrays e ponteiros  


 

Pode-se passar um array como parâmetro para um comando 4D ou para rotina de um plug-in 4D. Por outro lado, não se pode passar um array como parâmetro para um método de usuário. A alternativa é passar um apontador para um array como parâmetro para o método.

Nota: pode-se passar arrays de processo e de interprocesso como parâmetros, mas não arrays locais.

Seguem alguns exemplos.

  • Observe este exemplo:
 If((0<atNomes)&(atNomes<Size of array(atNomes))
  ` Se possível, selecione o elemento seguinte ao elemento selecionado
    atNomes:=atNomes+1
 End if

Se precisar fazer o mesmo para 50 arrays diferentes, pode-se evitar escrever a mesma coisa 50 vezes, usando o seguinte método de projeto:

  ` Método de projeto SELECIONAR ELEMENTO SEGUINTE
  ` (Ponteiro) SELECIONAR ELEMENTO SEGUINTE
  ` ( -> Array ) SELECIONAR ELEMENTO SEGUINTE
 
 C_POINTER($1)
 
 If((0<$1->)&($1-><Size of array($1->))
    $1->:=$1->+1 ` Se possível, selecione o elemento seguinte ao elemento selecionado
 End if

Então, pode-se escrever:

 SELECIONAR SEGUINTE ELEMENTO(->atNomes)
  ` ...
 SELECIONAR SEGUINTE ELEMENTO(->asCodigosPostais)
  ` ...
 SELECIONAR SEGUINTE ELEMENTO(->aiIDRegistros)
  ` ... e assim sucessivamente
  • O seguinte método de projeto tem como resultado a soma de todos os elementos de um array numérico (Inteiro, Inteiro longo ou real):
  ` Soma Array
  ` Soma Array ( Ponteiro)
  ` Soma Array ( -> Array )
 
 C_REAL($0)
 
 $0:=0
 For($vlElem;1;Size of array($1->))
    $0:=$0+$1->{$vlElem}
 End for

Nota: desde 4D v13, pode utilizar a função Sum para realizar a soma dos elementos de um array numérico.

Assim, pode-se escrever:

 $vlSum:=Soma Array(->arSalarios)
  ` ...
 $vlSum:=Soma Array(->aiDefectCounts)
  ` ..
 $vlSum:=Soma Array(->alPopulacao)
  • O seguinte método de projeto coloca em caixa alta todos os elementos de um array de texto ou alfanumérico:
  ` MAIUSCULAS ARRAY
  ` MAIUSCULAS ARRAY ( Ponteiro )
  ` MAIUSCULAS ARRAY ( -> Array )
 
 For($vlElem;1;Size of array($1->))
    If($1->{$vlElem}#"")
       $1->{$vlElem}:=Uppercase($1->{$vlElem}[[1]])+Lowercase(Substring($1->{$vlElem};2))
    End if
 End for

Assim, pode-se escrever:

 MAIUSCULAS ARRAY(->atTemas)
  ` ...
 MAIUSCULAS ARRAY(->asSobrenomes)

A combinação de arrays, apontadores e estruturas de looping, como For...End for, permite escrever muitos métodos de projeto úteis para manusear arrays.



Ver também 

Arrays
Arrays e a linguagem 4D

 
PROPRIEDADES 

Produto: 4D
Tema: Arrays

 
HISTÓRIA 

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)