Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Records

Oft steht man vor der Aufgabe Variable unterschiedlichen Typs zu einer gemeinsamen Datenstruktur zu verbinden. So könnte man zum Beispiel Personendaten, wie Name, Adresse, Geburtsdatum und Schuhgröße zu einem großen Datum zusammenfassen. Für solche Zusammenfassungen verwendet man Records. Diese werden folgendermaßen deklariert:

Name : record
         Variable1 : Typ1;
         Variable2 : Typ2;
         ...
       end;

Die einzelnen Variablen können nun einen beliebigen Typ haben. Der Zugriff auf den Inhalt eines Records erfolgt über den Punkt-Operator. Dabei wird zuerst der Name des Records geschrieben und dann mit einem Punkt dazwischen der Name der betreffenden Variablen.

Beispiel: Im folgenden Beispiel wird ein Record zur Speicherung von Personendaten deklariert:
type

TPerson : record
            FirstName : string[20];
            LastName  : string[50];
            Weight    : double;
            Height    : double;
            Male      : boolean;
          end;

Um zum Beispiel den Body Mass Index einer Person "IrgendWer" zu berechnen würde man wie folgt vorgehen:

var
  IrgendWer : TPerson;
  BMI       : double;

....
BMI := Irgendwer.Weight/sqr(Irgendwer.Height);
....

Hat man innerhalb eines Code-Abschnitts öfter auf die selbe Record-Variable zuzugreifen, so kann man die Schreibarbeit mit Hilfe des with-Statements verringern. Die Berechnung des Body Mass Index aus dem obigen Beispiel würde man dann folgendermaßen schreiben:

with IrgendWer do
  BMI := Weight/sqr(Height);

Persönl. Anmerkung: Ich verwende das with-Statement eher selten (nur wenn wirklich viele Referenzen auf einen Record notwendig sind), da es neben der schlechteren Lesbarkeit einen gravierenden Nachteil beim Debuggen hat: Der Debugger löst das with-Statement nicht auf und zeigt daher die Inhalte der Recordvariablen nicht an.

Last Update: 2008-09-09