Ein Record (in einigen Programmiersprachen auch als Struktur bezeichnet) stellt eine heterogene Menge von Elementen dar. Die Elemente werden Felder genannt. In der Deklaration eines Record-Typs wird für jedes Feld ein Name und ein Typ festgelegt. Die Syntax für die Deklaration eines Record-Typs lautet
type RecordTypName = record
Felderliste1: Typ1;
...
Felderlisten: Typn;
end
Recordtypname ist ein gültiger Bezeichner, Typ gibt einen Typ an, und Feldliste ist ein gültiger Bezeichner oder eine Liste von Bezeichnern, die durch Kommas voneinander getrennt sind. Der letzte Strichpunkt ist optional.
Die folgende Deklaration legt einen Record-Typ namens TDateRec an:
type
TDateRec = record
Year: Integer;
Month: (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov,
Dec);
Day: 1..31;
end;
Jeder TDateRec-Record enthält drei Felder: einen Integer-Wert namens Year, einen Aufzählungswert namens Month und einen weiteren Integer-Wert zwischen 1 und 31 namens Day. Die Bezeichner Year, Month und Day sind Feldbezeichner für TDateRec und verhalten sich wie Variablen. Die Typdeklaration für TDateRec weist den Feldern Year, Month und Day aber keinen Speicherplatz zu. Die Reservierung des Speichers erfolgt erst, wenn der Record instantiiert wird:
var Card1, Card2: TDateRec;
Diese Variablendeklaration erzeugt zwei Instanzen von TDateRec namens Record1 und Record2.
Sie können auf die Felder eines Records zugreifen, indem Sie die Feldbezeichner mit dem Record-Namen qualifizieren:
Record1.Year := 1904;
Record1.Month := Jun;
Record1.Day := 16;
Alternativ dazu ist auch die Verwendung einer with-Anweisung möglich:
with Record1 do
begin
Year := 1904;
Month := Jun;
Day := 16;
end;
Nun können die Werte der Felder von Record1 nach Record2 kopiert werden:
Record2 := Record1;
Da der Gültigkeitsbereich eines Feldbezeichners auf den Record beschränkt ist, in dem er sich befindet, brauchen Sie nicht auf eventuelle Namenskonflikte zwischen Feldbezeichnern und anderen Variablen zu achten.