Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:types:array [19/03/2021 14:35]
thierry [Libération]
prog:lazarus:types:array [20/03/2023 18:18] (Version actuelle)
thierry [Libération]
Ligne 2: Ligne 2:
 ===== Array Static ===== ===== Array Static =====
 <code delphi> <code delphi>
-   FormsProps ​= (fpWidth,​fpHeight);​ // Type énuméré +   TArrayOfString =  array[0..19] of string; // Tableau de 20 strings 
-   FormsPropNames ​= array[fpWidth..fpHeight] of string; // Tableau ayant comme index un type énuméré+</​code><​code delphi>​ 
 +   ​TFormsProps ​= (fpWidth,​fpHeight);​ // Type énuméré 
 +   TFormsPropNames ​= array[fpWidth..fpHeight] of string; // Tableau ayant comme index un type énuméré
  
 </​code>​ </​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 ==== ==== Déclaration ====
Ligne 25: Ligne 35:
   SetLength(vArr2D,​ 10, 10);   SetLength(vArr2D,​ 10, 10);
 </​code>​ </​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 ===== ===== Array en Const =====
 <code delphi> <code delphi>
Ligne 35: Ligne 59:
  
  
-<​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>+===== Comparaisons ===== 
 +  * [[https://​www.arbinada.com/​en/​node/​1411|Comparaison Array / Dynamic Array TList]] 
 + 
  
  
 +====== Voir aussi ======
 +  * [[prog:​lazarus:​classes:​tlist]]
  
-==== Sources ====+====== Sources ​& Ressources ======
  
  
Ligne 48: Ligne 75:
   * 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://​hdd34.developpez.com/​articles/​artdynarr/​]]
 +  *  [[https://​www.arbinada.com/​en/​node/​1411|Comparaison Array / Dynamic Array / TList]]