Ceci est une ancienne révision du document !
Array
Array Static
FormsProps = (fpWidth,fpHeight); // Type énuméré FormsPropNames = array[fpWidth..fpHeight] of string; // Tableau ayant comme index un type énuméré
Array Dynamic
Déclaration
var // 1 dimension vArr: array of Integer; // 2 dimensions vArr2D : array of array of integer;
Allocation
// 1 dimension SetLength(vArr, 10); Initialize(vArr, 10); //Met a zéro : Optionnel // 2 dimensions SetLength(vArr2D, 10, 10);
Libération
// Soit SetLength(vArr, 0); // Soit Finalize(vArr); // Soit vArr := nil;
J'ai testé et les trois ont le même effet, ils libèrent la même quantité de mémoire.
Array en Const
DayNameShort: array [DayStart .. DayEnd] of string= ( 'Sun','Mon','Tue','Wed','Thu', 'Fri','Sat' ) ;
Il est dit ICI:
En affectant
En affectant
nil
à une variable tableau dynamique, la mémoire désignée par le pointeur est automatiquement libérée. C'est équivalent à SetLength(MyVariable, 0)
.
Cela peut avoir un effet de bord, si la valeur du pointeur n'est pas valide pour différente raisons (i.e., cela a été lu depuis le disque où cela a été enregistré lors d'une précédente exécution). Pour éviter un tel pointeur invalide, vous devez utiliser FillChar(MyVariable,sizeof(MyVariable), #0)
.
Sources & Ressources
- Exemple de tableau dynamique multidimensionnel : https://wiki.freepascal.org/Example:_Multidimensional_dynamic_array/fr
Vous pourriez laisser un commentaire si vous étiez connecté.