Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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]]
 +
 +