4D v13.4

Utilizar el elemento cero de un array

Inicio

 
4D v13.4
Utilizar el elemento cero de un array

Utilizar el elemento cero de un array  


 

 

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:

  ` Método de objeto área de desplazamiento atNombres
 Case of
    :(Form event=On Load)
  ` Inicialización del array (como se mostró anteriormente)
       ARRAY TEXT(atNombres;5)
  ` ...
  ` Inicializar el elemento cero con el número
  ` de elemento actual seleccionado en su forma alfanúmerica
  ` Acá usted comienza sin elemento seleccionado
       atNombres{0}:="0"
 
    :(Form event=On Unload)
  ` No necesitamos más el array
       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:

  ` X ENVIAR PAQUETE ( Texto { ; Tiempo } )
 For($vlCar;1;Length($1))
    $1[[vlCar]]:=Char(<span class="rte4d_prm">aiMapaSalida</span><gen9>{ASCII($1[[vlCar]])})
 End for
 If(Count parameters>=2)
    SEND PACKET($2;$1)
 Else
    SEND PACKET($1)
 End if</gen9>
  ` X Recibir Paquete ( Text { ; Tiempo } ) -> 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>

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.

 
PROPIEDADES 

Producto: 4D
Tema: Arrays

 
VER TAMBIÉN 

Arrays