20. Record-Typen
Mit dem Datentyp Record können mehrere Werte zu einem Datensatz zusammengefasst werden. Im Gegensatz zu Arrays, die nur Werte eines Datentyps enthalten können, kann ein Record unterschiedliche Datentypen enthalten
Wir wollen eine kleine Adressverwaltung schreiben, für die sich der Einsatz eines Datenbanksystems nicht lohnt. Dazu definieren wir einen Datensatz TAdresse, der Name, Anschrift und Telefonnummer enthält. Dann deklarieren wir eine Variable adresse vom Typ TAdresse und eine Dateivariable datei vom Typ
type
TAdresse = record
sAnrede : string[5];
sName : string[50];
sStrasse: string[50];
sPLZ : string[5];
sOrt : string[50];
sTelefon: string[50]
end;
var
Form1 : TForm1;
adresse : TAdresse;
datei : File of TAdresse;
User-Interface:
Bezeichnung der Komponenten:
btnFirst : TButton;
btnBack : TButton;
btnNext : TButton;
btnLast : TButton;
btnNeu : TButton;
btnDel : TButton;
edAnrede : TEdit;
edName : TEdit;
edStrasse: TEdit;
edPLZ : TEdit;
edOrt : TEdit;
edTelefon: TEdit;
Als erstes schreiben wir uns zwei Prozeduren, die die Werte eines Datensatzes aus den Edit-Feldern einlesen, bzw. in den Edit-Feldern anzeigen.
procedure TForm1.einlesen;
begin
adresse.sAnrede := edAnrede.Text;
adresse.sName := edName.Text;
adresse.sStrasse := edStrasse.Text;
adresse.sPLZ := edPLZ.Text;
adresse.sOrt := edOrt.Text;
adresse.sTelefon := edTelefon.Text;
end;
procedure TForm1.anzeigen;
begin
edAnrede.Text := adresse.sAnrede;
edName.Text := adresse.sName;
edStrasse.Text := adresse.sStrasse;
edPLZ.Text := adresse.sPLZ;
edOrt.Text := adresse.sOrt;
edTelefon.Text := adresse.sTelefon;
end;
Um mehrere Datensätze im Programm halten zu können kann man entweder ein array of TAdresse deklarieren oder die Datensätze in einen formatierten String umwandeln und in einer Stringliste ablegen. Zum Speichern kann dann die Stringliste mit der Methode SaveToFile in eine Textdatei geschrieben werden.
Wir wollen statt dessen im nächsten Kapitel die Datensätze direkt in einer "typisierten" Datei also einem File of records speichern
Aufgaben
- Schreiben Sie eine Funktion RecToStr, die einen Datensatz in einen String umwandelt. Dabei sollen die Werte des Datensatzes genau soviel Zeichen lang sind, wie in der Typdeklaration des Datensatz festgelegt wurde. Ausgedruckt ergeben die Daten dann eine Tabelle mit fester Spaltenbreite.
- Schreiben Sie eine Funktion RecToSDF, die einen Datensatz in einen String umwandelt, bei dem die Werte durch einen Delimiter getrennt sind
(SDF = System Data Format). - Schreiben Sie die Funktionen StrToRec und SDFToRec.
Einführung in das Programmieren mit DELPHI
