Array |
Tableau |
---|---|
Delphi/Kylix/Lazarus |
Syntaxe
Name=Array[debut..fin] of type_de_base | Tableau statique |
Name=Array[typescalaire] of type_de_base | Tableau statique |
Name=Array of type_de_base | Tableau dynamique |
Name=Array of const | Tableau de variant ouvert |
Paramètres
Nom | Description |
---|---|
debut | Ce paramètre permet d'indiquer la borne inférieur |
fin | Ce paramètre permet d'indiquer la borne supérieur |
typescalaire | Ce paramètre permet d'indiquer un type scalaire comme ShortInt, Integer, Byte, Word, Boolean, Char ou numérique. |
type_de_base | Ce paramètre permet d'indiquer un type de données |
Description
Ce mot réservé permet de définir des tableaux avec des valeurs scalaires. Le Delphi offre la possibilité de définir 3 types de tableaux : un tableau ouvert, un tableau statique ou un tableau dynamique.
Remarques
- Un paramètre de sous-routine peut être un tableau ouvert. Vous pouvez transmettre n'importe quel tableau statique ou dynamique au sous-programme. Le Delphi transmet un paramètre caché supplémentaire indiquant la limite supérieure du tableau. Le sous-programme ne peut pas changer la taille d'un tableau dynamique transmis en tant que tableau ouvert. Indépendamment du type d'index du tableau actuel, le paramètre ouvert array utilise un type d'index Integer, avec la limite inférieure égale à zéro.
- Un type spécial de tableau ouvert est un tableau ouvert variant, déclaré comme array de const. Chaque élément du tableau est converti en enregistrement TVarRec. L'utilisation la plus courante d'un tableau ouvert variant consiste à écrire un sous-programme prenant un nombre variable de paramètres (tel que la fonction Format dans l'unité SysUtils).
- Un tableau statique est un tableau Pascal traditionnel. Vous pouvez utiliser n'importe quel type ordinal comme index et un tableau peut avoir plusieurs index. La taille d'un tableau statique ne peut pas changer au moment de l'exécution.
- Un tableau dynamique est un tableau dont le type d'index est de type de données Integer et dont la taille peut changer pendant l'exécution du programme. La limite inférieure de l'index est toujours zéro et la limite supérieure est définie avec la procédure SetLength. Pour copier un tableau dynamique, appelez la procédure Copy. L'affectation d'un tableau dynamique affecte une référence au tableau sans affecter le contenu du tableau. Le Delphi utilise le comptage de références pour gérer la durée de vie des tableaux dynamiques. À la différence des chaînes de caractères, le Delphi n'utilise pas la copie sur écriture pour les tableaux dynamiques.
- Vous pouvez utilisez Copy pour copier un tableau dans un autre. Toutefois, il ne copie que la première dimension de tableau la plus élevée, le nouveau tableau fera toujours référence aux éléments des sous-tableaux.
- Un tableau de AnsiChar, Char ou WideChar est spécial lorsque l'index est une plage entière commençant à 0. Le Delphi considère un tel tableau comme une chaîne de caractères ou une chaîne de caractères Unicode (à moins que vous ne désactiviez les directives de compilation $ExtendedSyntax ou $X), sauf que vous ne pouvez pas transmettre un tableau de caractères à une sous-routine comportant un paramètre var string. Vous pouvez également passer une référence à un tableau en tant que paramètre à un sous-programme prenant un paramètre de PChar ou de PWideChar. Le Delphi transmet automatiquement l'adresse du premier caractère du tableau.
- Les tableaux sont entreposés dans l'ordre des colonnes, c'est-à-dire que l'indice le plus à droite est accessible le plus rapidement.
- Si le type d'index est un type de données entier, normalement Byte, ShortInt, Integer ou Word, alors l'intervalle de ce type de données définit l'intervalle de dimensions du tableau. Par exemple, un Byte donne un intervalle de 0..255.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
- Program ArraySamples;
-
- {$APPTYPE CONSOLE}
- Uses SysUtils;
-
- Const
- TableauNombre:Array[1..7] of Byte=(10,20,10,4,6,1,5);
- TableauChaine:Array[1..4] of String=('ABC','DEF','GHI','JKL');
- TableauMixed:Array[-3..3] of Byte=(10,Byte('A'),Ord('B'),5,Byte('C'),Ord('D'),7);
-
- Var
- TableauEntierDe0A255:Array[Byte]of Integer;
- TableauEntierLongDe0A5:Array[0..5]of LongInt;
- TableauChar:Array['A'..'Z']of Byte;
- I:Byte;
-
- BEGIN
- For I:=1 to 7 do Begin
- WriteLn('TableauNombre[',I,']=',TableauNombre[I]);
- End;
- END.
-
on obtiendra le résultat suivant :
TableauNombre[1]=10TableauNombre[2]=20
TableauNombre[3]=10
TableauNombre[4]=4
TableauNombre[5]=6
TableauNombre[6]=1
TableauNombre[7]=5
Voir également
Langage de programmation - Structure de données - Les types scalaires
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Copy
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - High
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Length
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Low
Langage de programmation - Delphi/Kylix/Lazarus - Références de mots réservés (mots clefs) - RECORD
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - SetLength
Langage de programmation - Delphi/Kylix/Lazarus - Référence de procédures et fonctions - Slice
Langage de programmation - Delphi/Kylix/Lazarus - Références de mots réservés (mots clefs) - TYPE