Envoyé par
F1 Delphi 7
Un enregistrement (appelé aussi structure dans certains langages) représente un ensemble de données hétérogènes. Chaque élément est appelé un champ ; la déclaration d'un type enregistrement spécifie le nom et le type de chaque champ. Une déclaration de type enregistrement a la syntaxe suivante :
type nomTypeEnregistrement = record
listeChamp1: type1;
...
listeChampn: typen;
end
où nomTypeEnregistrement est un identificateur valide et où chaque type désigne un type, et chaque listeChamp est un identificateur valide ou une liste d'identificateurs délimitée par des virgules. Le point-virgule final est facultatif.
Par exemple, la déclaration suivante crée un type enregistrement nommé TDateRec.
type
TDateRec = record
Annee: Integer;
Mois: (Jan, Fev, Mar, Avr, Mai, Jun,
Jul, Aou, Sep, Oct, Nov, Dec);
Jour: 1..31;
end;
Chaque TDateRec contient trois champs : une valeur entière appelée Annee, une valeur d'un type énuméré appelé Mois et une autre valeur entière comprise entre 1 et 31 appelée Jour. Les identificateurs Annee, Mois et Jour sont des noms de champs de TDateRec qui se comportent comme des variables. Néanmoins, la déclaration de type TDateRec n'alloue pas de mémoire pour les champs Annee, Mois et Jour ; la mémoire est allouée quand vous instanciez l'enregistrement, de la manière suivante :
var Record1, Record2: TDateRec;
Cette déclaration de variable crée deux instances de TDateRec, appelées Record1 et Record2.
Vous pouvez accéder aux champs de l'enregistrement en qualifiant le nom de champ avec le nom de l'enregistrement :
Record1.Annee := 1922;
Record1.Mois := Nov;
Record1.Jour := 26;
Ou en utilisant une instruction with :
with Record1 do
begin
Annee := 1922;
Mois := Nov;
Jour := 26;
end;
Vous pouvez alors copier les valeurs des champs de Record1 dans Record2 :
Record2 := Record1;
Comme la portée d'un nom de champ est limitée à l'enregistrement dans lequel il est spécifié, vous n'avez pas à vous préoccuper de conflits entre les noms de champ et des noms de variable.
Au lieu de définir des types d'enregistrement, vous pouvez utiliser directement la construction record ... dans des déclarations de variable :
var S: record
Nom: string;
Age: Integer;
end;
Cependant, une telle déclaration annule complètement les avantages des enregistrements, à savoir éviter le codage répétitif de groupes de variables identiques. De plus, des enregistrements déclarés séparément avec cette méthode ne sont pas compatibles pour l'affectation même si leur structure est identique.
Partager