Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
prog:lazarus:types:array [05/04/2020 12:37] thierry créée |
prog:lazarus:types:array [20/03/2023 18:18] (Version actuelle) thierry [Libération] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Array ====== | ====== Array ====== | ||
===== Array Static ===== | ===== Array Static ===== | ||
+ | <code delphi> | ||
+ | TArrayOfString = array[0..19] of string; // Tableau de 20 strings | ||
+ | </code><code delphi> | ||
+ | TFormsProps = (fpWidth,fpHeight); // Type énuméré | ||
+ | TFormsPropNames = array[fpWidth..fpHeight] of string; // Tableau ayant comme index un type énuméré | ||
+ | |||
+ | </code> | ||
+ | ==== Plusieurs dimensions ==== | ||
+ | Ce dessous la variable ''vArrayOfWord'' contient un tableau a deux dimensions de 0..19 et 0..2\\ | ||
+ | (comme un tableau de 19 sur 2 cases) | ||
+ | <code delphi> | ||
+ | vArrayOfWord : array[0..19][0..2] of word; | ||
+ | </code> | ||
+ | |||
+ | |||
===== Array Dynamic ===== | ===== Array Dynamic ===== | ||
+ | ==== Déclaration ==== | ||
+ | <code delphi> | ||
+ | var | ||
+ | // 1 dimension | ||
+ | vArr: array of Integer; | ||
+ | |||
+ | // 2 dimensions | ||
+ | vArr2D : array of array of integer; | ||
+ | </code> | ||
+ | ==== Allocation ==== | ||
+ | <code delphi> | ||
+ | // 1 dimension | ||
+ | SetLength(vArr, 10); | ||
+ | Initialize(vArr, 10); //Met a zéro : Optionnel | ||
+ | | ||
+ | // 2 dimensions | ||
+ | SetLength(vArr2D, 10, 10); | ||
+ | </code> | ||
+ | ==== Libération ==== | ||
+ | <code delphi> | ||
+ | // Soit | ||
+ | SetLength(vArr, 0); | ||
+ | // Soit | ||
+ | Finalize(vArr); | ||
+ | // Soit | ||
+ | vArr := nil; | ||
+ | </code> | ||
+ | J'ai testé et les trois ont le même effet, ils libèrent la même quantité de mémoire. | ||
+ | <note>Il est dit [[https://wiki.freepascal.org/Dynamic_array/fr|ICI]]:\\ | ||
+ | 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)''.</note> | ||
+ | ===== Array en Const ===== | ||
+ | <code delphi> | ||
+ | DayNameShort: array [DayStart .. DayEnd] of string= | ||
+ | ( 'Sun','Mon','Tue','Wed','Thu', | ||
+ | 'Fri','Sat' ) ; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Comparaisons ===== | ||
+ | * [[https://www.arbinada.com/en/node/1411|Comparaison Array / Dynamic Array / TList]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Voir aussi ====== | ||
+ | * [[prog:lazarus:classes:tlist]] | ||
+ | |||
+ | ====== Sources & Ressources ====== | ||
+ | |||
+ | |||
* Source : [[https://wiki.freepascal.org/Dynamic_array/fr]] | * Source : [[https://wiki.freepascal.org/Dynamic_array/fr]] | ||
* Exemple de tableau dynamique multidimensionnel : [[https://wiki.freepascal.org/Example:_Multidimensional_dynamic_array/fr]] | * Exemple de tableau dynamique multidimensionnel : [[https://wiki.freepascal.org/Example:_Multidimensional_dynamic_array/fr]] | ||
+ | * [[https://hdd34.developpez.com/articles/artdynarr/]] | ||
+ | * [[https://www.arbinada.com/en/node/1411|Comparaison Array / Dynamic Array / TList]] | ||
+ | |||
+ | |||