Difference between revisions of "Record/fr"
(Created page with "{{Record}} Un '''enregistrement''' est un type de donnée hautement structuré en Pascal. Les enregistrements sont très largement utilisés en Pasc...") |
|||
Line 42: | Line 42: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | On appelle cela un enregistrement avec | + | On appelle cela un enregistrement avec variantes. La variable, facultative, qui suit le case est appelé discriminant, le type seul peut être mentionné, s'il n'est pas besoin de manipuler le discriminant dans le code. |
− | Dans un record, on ne peut avoir qu'une seule partie variable qui doit se trouver à la fin du record ; rien n'empêche cependant d'imbriquer des enregistrements avec | + | Dans un record, on ne peut avoir qu'une seule partie variable qui doit se trouver à la fin du record ; rien n'empêche cependant d'imbriquer des enregistrements avec variantes... |
− | La taille du | + | La taille du type est égale à la somme de celle de la partie fixe et de celle de la partie variante la plus grande. Attention: les différentes alternatives se superposent en mémoire donc l'affectation des champs d'une variante modifie le contenu des champs des autres variantes sans vérifier la cohérence de ces changements. |
== Adressage == | == Adressage == |
Revision as of 16:46, 31 July 2014
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
magyar (hu) │
polski (pl) │
português (pt) │
русский (ru) │
Un enregistrement est un type de donnée hautement structuré en Pascal. Les enregistrements sont très largement utilisés en Pascal pour regrouper logiquement des articles de données.
Alors que des simples structures de données tels les tableaux ou les ensembles sont constitués d'éléments tous du même type, un enregistrement peut être constitué d'un nombre d'élements de types différents, et peut prendre une grosse complexité. Chaque partie séparée d'un enregistrement est appelé un champ.
Déclaration
Structure fixe
type
TMember = record
firstname, surname : string;
address: array [1..3] of string;
phone: string;
birthdate: TDateTime;
paidCurrentSubscription: boolean
end;
Structure variable
Des structures plus complexes sont possibles, p.ex.:
type
maritalStates = (single, married, widowed, divorced);
TPerson = record
(* PARTIE CONSTANTE *)
(* of course records may be nested *)
name: record
first, middle, last: string;
end;
sex: (male, female);
(* date of birth *)
dob: TDateTime;
(* PARTIE VARIABLE *)
case maritalStatus: maritalStates of
single: ( );
married, widowed: (marriageDate: TDateTime);
divorced: (marriageDate, divorceDate: TDateTime;
isFirstDivorce: boolean)
end;
On appelle cela un enregistrement avec variantes. La variable, facultative, qui suit le case est appelé discriminant, le type seul peut être mentionné, s'il n'est pas besoin de manipuler le discriminant dans le code. Dans un record, on ne peut avoir qu'une seule partie variable qui doit se trouver à la fin du record ; rien n'empêche cependant d'imbriquer des enregistrements avec variantes... La taille du type est égale à la somme de celle de la partie fixe et de celle de la partie variante la plus grande. Attention: les différentes alternatives se superposent en mémoire donc l'affectation des champs d'une variante modifie le contenu des champs des autres variantes sans vérifier la cohérence de ces changements.
Adressage
Champs
Les champs sont accédés en plaçant un point entre le nom de l'enregistrement et le nom du champ, ainsi:
a.firstname := 'George';
a.surname := 'Petersen';
a.phone := '789534';
a.paidCurrentSubscription := true;
Alternativement, des groupes de champs peut être accédés successivement sans répéter le nom de l'enregistrement à l'aide de la construction with:
with a do
begin
firstname := 'George';
surname := 'Petersen';
phone := '789534';
paidCurrentSubscription := true
end;
Instances
Un enregistrement est traité par le programme comme une entité entière et p.ex. un enregistrement entier peut être copié dans un autre, de même type, à l'aide d'une seule affectation.
var
a, b: TMember;
(* programme principal *)
begin
{ ... affecte les valeurs vers le champs de a dans l'enregistrement b .. }
b := a
{ maintenant b contient la copie de a }
{ à ne pas confondre avec les références : }
{ a et b sont des entités différentes de TMember }
end.
Voir aussi
- Enregistrements, tutoriel qui couvre les enregistrements.
Types de données | |
---|---|
Types de données simples | Boolean | Byte |Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word |
Types de données complexes | Array | Class | Record | Set | String | ShortString |