Arrays de dos dimensiones

4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 6.0


Cada comando de declaración de array puede crear o redimensionar arrays de una o dos dimensiones. Ejemplo:

   ARRAY TEXT (atTemas;100;50) ` Crear un array texto compuesto de 100 filas de 50 columnas

Los arrays de dos dimensiones son esencialmente objetos del lenguaje; no es posible visualizarlos o imprimirlos.

En el ejemplo anterior:

atTemas es un array de dos dimensiones

atTemas{8}{5} es el elemento 5 (columna 5...) de la fila 8

atTemas{20} es la fila 20 y un array de una dimensión

Size of Array(atTemas) devuelve 100, que es el número de filas

Size of Array(atTemas{17}) devuelve 50, que es el número de columnas de la fila 17

En el siguiente ejemplo, un puntero a cada campo de cada tabla en la base se almacena en un array de dos dimensiones:

   C_LONGINT($vlUltimaTabla;$vlUltimoCampo)
   C_LONGINT($vlNumeroCampo)
      ` Crear tantas filas vacías como tablas
   $vlUltimaTabla:=Get last table number
   ARRAY POINTER (<>apCampos;$vlUltimaTabla;0)  `Array de dos dimensiones con X lineas y 0 columnas
      ` Para cada tabla
   For ($vlTabla;1;$vlUltimaTabla)
      If(Is table number valid($vlTabla))
         $vlUltimoCampo:=Get last field number($vlTabla) 
            ` Definir los valores de los elementos
         $vlNumeroColumna:=0
         For ($vlCampo;1;$vlUltimoCampo)
            If(Is field number valid($vlTabla;$vlCampo))
               $vlNumeroColumna:=$vlNumeroColumna+1
                  `Inserte una columna en la línea de la tabla en uso
               INSERT IN ARRAY(<>apCampos{$vlTabla};$vlNumeroColumna;1)
                  `Asigne la "celda" con el puntero
               <>apCampos{$vlTabla}{$vlNumeroColumna}:=Field($vlTabla;$vlCampo)
            End if 
         End for
      End if 
   End for


En la medida en que este array de dos dimensiones haya sido inicializado, puede obtener los punteros a los campos para una tabla particular de la siguiente forma:



      ` Obtener los punteros a los campos para la tabla en pantalla::
   COPY ARRAY (<>apCampos{Table(Current form table)};$apCamposActuales)
      ` Inicializar los campos booleanos y fecha
   For ($vlElemento;1;Size of array($apCamposActuales))
      Case of
         : (Type($apCamposActuales{$vlElemento}->)=Is Date)
            $apCamposActuales{$vlElemento}->:=Current date
         : (Type($apCamposActuales{$vlElemento}->)=Is Boolean)
            $apCamposActuales{$vlElemento}->:=True
      End case
   End for
   

Nota: como lo sugiere este ejemplo, las filas de un array de dos dimensiones pueden tener o no el mismo tamaño.

Ver también

Arrays.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente