Ceci est une ancienne révision du document !


Array

Array Static

   TArrayOfString =  array[0..19] of string; // Tableau de 20 strings
   TFormsProps = (fpWidth,fpHeight); // Type énuméré
   TFormsPropNames = 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 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).

Comparaisons

Voir aussi

Sources & Ressources

Vous pourriez laisser un commentaire si vous étiez connecté.