4D v16.3

Arrays de dos dimensiones

Inicio

 
4D v16.3
Arrays de dos dimensiones

Arrays de dos dimensiones  


 

 

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

 
PROPIEDADES 

Producto: 4D
Tema: Arrays

 
HISTORIA 

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)