Un array siempre tiene un elemento cero. Mientras el elemento cero no se muestra cuando un array maneja un objeto de formulario, no hay restricción(*) en utilizarlo con el lenguaje.
Un ejemplo del uso del elemento cero es el caso del combo box de la sección Arrays y objetos de formulario.
Estos son otros dos ejemplos.
1. Si quiere ejecutar una acción sólo cuando usted hace clic en un elemento diferente del previamente seleccionado, debe hacer seguimiento de cada elemento seleccionado. Una manera de hacer esto es utilizar una variable de proceso en la cual usted mantiene el número del elemento seleccionado. Otra forma es utilizar el elemento cero del array:
Case of
:(Form event=On Load)
ARRAY TEXT(atNombres;5)
atNombres{0}:="0"
:(Form event=On Unload)
CLEAR VARIABLE(atNames)
:(Form event=On Clicked)
If(atNames#0)
If(atNames#Num(atNombres{0}))
vtInfo:="Haga clic en: "+atNombres{atNombres}+" que no fue seleccionado anteriormente."
atNombres{0}:=String(atNombres)
End if
End if
:(Form event=On Double Clicked)
If(atNombres#0)
ALERT("Usted hace doble clic en: "+atNombres{atNombres}
End if
End case
2. En modo compatibilidad ASCII, cuando envía o recibe un flujo de caracteres de o hacia un documento o puerto serial, 4D le ofrece la posibilidad de filtrar los códigos ASCII entre plataformas y sistemas que utilizan diferentes mapas ASCII— con los comandos USE CHARACTER SET, Mac to ISO, ISO to Mac, Mac to Win y Win to Mac..
En algunos casos, usted podría querer controlar integralmente la traducción de los códigos ASCII. Una forma de hacerlo es utilizar un array de enteros de 255 elementos, donde el elemento N es la traducción ASCII del carácter cuya fuente de código ASCII es N. Por ejemplo, si el código ASCII #187 debe ser traducido como #156, usted escribe <>aiMapaSalida{187}:=156 y <>aiMapaEntrada{156}:=187 en el método que inicializa los arrays interprocesos utilizados en la base. Entonces puede enviar un flujo de caracteres con el siguiente método de proyecto 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>
En este ejemplo avanzado, si un flujo de caracteres contiene caracteres NULL (código ASCII cero) se envía o recibe, el elemento cero de los arrays <>aiMapaSalida y <>aiMapaEntrada jugará su papel como otro elemento de los 255 elementos de los 255 arrays.
(*) Sin embargo, hay una excepción: en los List Box de tipo array, el elemento cero se utiliza internamente para guardar el valor anterior de un elemento en edición, de manera que no es posible utilizarlo en este contexto particular.