Ceci est une ancienne révision du document !
Record
De base
Type TPoint = record x : Longint; y : Longint; end;
Packed
Source : https://www.freepascal.org/docs-html/ref/refsu15.html
Free Pascal soutient également un packed record
, c'est-à-dire un enregistrement où tous les éléments sont alignés sur un octet.
Par conséquent, les deux déclarations suivantes sont équivalentes :
{$PackRecords 1} Trec2 = Record A : Octet ; B : Mot ; end ; {$PackRecords default}
et
Trec2 = Packed Record A : Octet ; B : Mot ; end;
Notez les {$PackRecords Default}
après la première déclaration pour rétablir le paramètre par défaut !
Étant donné que la façon dont les enregistrements sont disposés en mémoire dépend de la plate-forme, la seule façon de garantir une disposition compatible entre les plates-formes (en supposant que tous les champs sont déclarés en utilisant un type ayant la même signification sur ces mêmes plates-formes) est d'utiliser {$PACKRECORDS 1}
.
En particulier, si un fichier typé avec des enregistrements, produit par un programme Turbo Pascal, doit être lu, il y a de fortes chances que la tentative de lecture correcte de ce fichier échoue.
La raison en est que le paramètre par défaut de Free Pascal {$PACKRECORDS N} n'est pas nécessairement compatible avec celui de Turbo Pascal.
Il peut être modifié en {$PACKRECORDS 1} ou {$PACKRECORDS 2} selon le paramètre utilisé dans le programme Turbo Pascal qui crée le fichier (bien qu'il puisse toujours échouer avec {$PACKRECORDS 2} en raison des différentes exigences d'alignement de type entre MSDOS 16 bits et votre plate-forme actuelle).