Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||||||||||||
|
4D v20 R7
Arrays y memoria
|
Tipo de array | Fórmula para determinar la cantidad de memoria utilizada en bytes |
Booleano | (31+Número de elementos)\8 |
Fecha | (1+Número de elementos) * 6 |
Alfa (modo Unicode) | (1+Número de elementos) * (Suma del tamaño de cada texto) |
Entero | (1+Número de elementos) * 2 |
Entero largo | (1+Número de elementos) * 4 |
Imagen | (1+Número de elementos) * 4 + Suma del tamaño de cada imagen |
Puntero | (1+Número de elementos) * 16 |
Real | (1+Número de elementos) * 8 |
Texto (modo Unicode) | (1+Número de elementos) * 6 + Suma del tamaño de cada texto |
Dos dimensiones | (1+Número de elementos) * 12 + Suma del tamaño de cada array |
Notas:
Cuando trabaja con arrays muy grandes, la mejor forma de manejar las situaciones de saturación de la memoria es acompañar la creación del array de un método de proyecto ON ERR CALL. Ejemplo:
` Usted va a ejecutar una operación por lotes toda la noche
` que requiere la creación de arrays grandes. Para evitar
` errores en la noche, cree los arrays al comienzo de la operación
` y pruebe los errores en este momento:
gError:=0 ` Inicialización
ON ERR CALL("MANEJO DE ERRORES") ` Instalación del método de gestión de errores
ARRAY STRING(63;asEsteArray;50000) ` Apróximadamente 3125K en modo ASCII
ARRAY REAL(arOtroArray;50000) ` 488K
ON ERR CALL("") `Ya no es necesario interceptar errores
If(gError=0)
` Los arrays pudieron ser creados
` y vamos a seguir con la operación
Else
ALERT("Esta operación necesita más memoria")
End if
` Cualquiera que sea el caso, no necesitamos más los arrays
CLEAR VARIABLE(asEsteArray)
CLEAR VARIABLE(arOtroArray)
El método de proyecto MANEJO DE ERRORES es el siguiente:
` Método de proyecto MANEJO DE ERRORES
gError:=Error ` Devolver el código del error
Producto: 4D
Tema: Arrays
Manual de lenguaje 4D ( 4D v20 R7)