| 4D v13.4Arrays and Memory | ||||||||||||||||||||||||||||
| 
 | 
    4D v13.4
 Arrays and Memory 
         | |||||||||||||||||||||||||||
| Array Type | Formula for determining Memory Usage in Bytes | 
| Boolean | (31+number of elements)\8 | 
| Date | (1+number of elements) * 6 | 
| String (Unicode mode) | (1+number of elements) * (Sum of the size of each text) | 
| String (ASCII compatibility mode) | (1+number of elements) * Declared length (+1 of odd, +2 if even) | 
| Integer | (1+number of elements) * 2 | 
| Long Integer | (1+number of elements) * 4 | 
| Picture | (1+number of elements) * 4 + Sum of the size of each picture | 
| Pointer | (1+number of elements) * 16 | 
| Real | (1+number of elements) * 8 | 
| Text (Unicode mode) | (1+number of elements) * (Sum of the size of each text) | 
| Text (ASCII compatibility mode) | (1+number of elements) * 6 + Sum of the size of each text | 
| Two-dimensional | (1+number of elements) * 12 + Sum of the size of each array | 
Notes:
When working with very large arrays, the best way to handle full memory situations is to surround the creation of the arrays with an ON ERR CALL project method. Example:
  ` You are going to run a batch operation the whole night
  ` that requires the creation of large arrays. Instead of risking
  ` occurrences of errors in the middle of the night, put
  ` the creation of the arrays at the beginning of the operation
  ` and test the errors at this moment:
 gError:=0 ` Assume no error
 ON ERR CALL("ERROR HANDLING") ` Install a method for catching errors
 ARRAY STRING(63;asThisArray;50000) ` Roughly 3125K in ASCII mode
 ARRAY REAL(arThisAnotherArray;50000) ` 488K
 ON ERR CALL("") ` No longer need to catch errors
 If(gError=0)
  ` The arrays could be created
  ` and let's pursue the operation
 Else
    ALERT("This operation requires more memory!")
 End if
  ` Whatever the case, we no longer need the arrays
 CLEAR VARIABLE(asThisArray)
 CLEAR VARIABLE(arThisAnotherArray)The ERROR HANDLING project method is listed here:
  ` ERROR HANDLING project method
 gError:=Error ` Just return the error code
	Product:  4D
	Theme:  Arrays