4D v13.4

Usando o elemento zero de um array

Página Inicial

 
4D v13.4
Usando o elemento zero de um array

Usando o elemento zero de um array  


 

 

Um array sempre tem um elemento zero. Enquanto o elemento zero não se mostra quando um array apresenta um formulário de objeto, não há restrição para utilizá-lo com a linguagem.

Um exemplo de uso do elemento zero é o caso da combo box discutido na seção Arrays e objetos de formulário.

Seguem dois outros exemplos.

1. Se você quiser executar uma ação apenas quando clicar em um elemento diferente do elemento previamente selecionado, você deve fazer o seguimento de cada elemento selecionado. Uma maneira de fazer isso é usando uma variável de processo, na qual se mantém o número do elemento selecionado. Outra maneiro é usando o elemento zero do array:

  ` Método de objeto área de rolagem atNomes
 Case of
    :(Form event=On Load)
  ` Inicialização do array (como se mostrou anteriormente)
       ARRAY TEXT(atNomes;5)
  ` ...
  ` Inicialização do elemento zero com o número
  ` do elemento atual selecionado em sua forma alfanumérica
  ` Aqui começa-se sem nenhum elemento selecionado
       atNomes{0}:="0"
 
    :(Form event=On Unload)
  ` Não necessitamos mais do array
       CLEAR VARIABLE(atNames)
 
    :(Form event=On Clicked)
       If(atNames#0)
          If(atNames#Num(atNomes{0}))
             vtInfo:="Clique em: "+atNomes{atNomes}+" que não foi selecionado anteriormente."
             atNomes{0}:=String(atNombres)
          End if
       End if
    :(Form event=On Double Clicked)
       If(atNomes#0)
          ALERT("Você faz clique duplo em: "+atNomes{atNomes}
       End if
 End case

2. No modo de compatibilidade ASCII, quando se envia ou recebe um fluxo de caracteres de ou para um documento de porta serial, 4D oferece a possibilidade de filtrar os códigos ASCII entre as plataformas e sistemas que utilizam diferentes mapas ASCII— com os comandos , Mac to ISO, ISO to Mac, Mac to Win y Win to Mac.

Em alguns casos, você pode querer controle total sobre o modo como os códigos ASCII. Uma maneira de se fazer isso é usando um array de inteiros de 255 elementos, onde o elemento N é a tradução ASCII do caracter cuja fonte de código ASCII é N. Por exemplo, se o código ASCII #187 deve ser traduzido como #156, você deve escrever <>aiMapaSaida{187}:=156 y <>aiMapaEntrada{156}:=187 no método que inicializa os arrays de inter-processo utilizados na base de dados. Então, você pode mandar um fluxo de caracteres com o seguinte método de projeto personalizado:

  ` X ENVIAR PACOTE ( Texto { ; Tempo } )
 For($vlCar;1;Length($1))
    $1[[vlCar]]:=Char(<span class="rte4d_prm">aiMapaSaida</span><gen9>{ASCII($1[[vlCar]])})
 End for
 If(Count parameters>=2)
    SEND PACKET($2;$1)
 Else
    SEND PACKET($1)
 End if</gen9>
  ` X Receber Pacote ( Text { ; Tempo } ) -> Texto
 If(Count parameters>=2)
    RECEIVE PACKET($2;$1)
 Else
    RECEIVE PACKET($1)
 End if
 $0:=$1
 For($vlCar;1;Length($1))
    $0[[vlCar]]:=Char(<span class="rte4d_prm">aiMapaEntrada</span><gen9>{ASCII($0[[vlCar]])})
 End for</gen9>

Neste exemplo avançado, se um fluxo de caracteres contém caracteres NULL (código ASCII zero) é enviado ou recebido, o elemento zero dos arrays <>aiMapaSaida e <>aiMapaEntrada cumprirá seu papel como outro elemento dos outros 255 elementos dos 255 arrays.

(*) No entanto, há uma exceção: nos List Box de tipo array, o elemento zero se utiliza internamente para guardar o valor anterior de um elemento em edição, de forma que não é possível utilizar neste contexto particular.

 
PROPRIEDADES 

Produto: 4D
Tema: Arrays

 
VER TAMBÉM 

Arrays