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:
Case of
:(Form event=On Load)
ARRAY TEXT(atNomes;5)
atNomes{0}:="0"
:(Form event=On Unload)
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:
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.