Ich_bin_dabei hat geschrieben:Code: Alles auswählen
var
Person: record
Name: string [30];
Vorname: string [30];
Telefonnummern: Array [1..2] of string [20];
end;
Hallo Michael!
Grundsätzlich geht das zwar so, bloß kommst Du damit noch nicht allzu weit. Denn jetzt hast Du zwar
eine Person erfaßt, aber Sinn und Zweck z.B. eines Adressbuches ist ja,
mehrere Einträge zu verwalten und (das wäre dann der nächste Schritte)
weitere nach Belieben hinzufügen zu können. Von "
verketteten Listen" bist Du immer noch weit entfernt - aber die würde ich an Deiner Stelle im Moment sowieso mal für eine Weile zurückstellen.
Erstmal wäre es jetzt wichtig, Dir den Unterschied zwischen
Variablen- und
Typdeklaration klarzumachen. Denn für Deinen nächsten Eintrag "
Person2" müßtest Du den ganzen Record nochmal neu tippen, wenn Du auch den als Variable deklarieren wolltest. Einfacher wäre es, diesen Record als
Typ zu erstellen, und Deine Variablen dann darauf zu beziehen:
Code: Alles auswählen
type
TPerson: record
Name: string [30];
Vorname: string [30];
Telefonnummern: Array [1..2] of string [20];
end;
var
Person_1,
Person_2 : TPerson;
...
begin
Person_1.Name := 'Mustermann';
Person_1.Vorname := 'Max';
Person_2.Name := 'Rampensau';
Person_2.Vorname := 'Moritz';
...
end;
Warum das "
T" vorne bei "
TPerson"? Das kannst Du auch weglassen, es ist nur eine ganz sinnvolle Konvention, um schon in der Namensgebung anzudeuten, daß es sich hierbei um einen
Typ handelt. Wichtig ist aber vor allem, daß Du den Umgang mit
Typen und
Variablen lernst und verstehst, wieso diese Unterscheidung ganz nützlich ist.
Der nächste Schritt wäre dann, herauszufinden, wie Du
mehrere Personen erfassen kann, ohne jedesmal eine neue Variable "
Person_n" deklarieren zu müssen. Du hast die Telefonnummern ja schon als
statischen String-Array definiert. Genauso gut könntest Du nun Deine Personen-Einträge als Array definieren:
Code: Alles auswählen
var
Personen : Array[1..20] of TPerson;
...
begin
Personen[5].Telefonnummern[9] := '1234567';
end;
Der nächste Schritt wäre,
statische Arrays durch
dynamische zu ersetzen. Und noch einen Schritt weiter könntest Du Dich dann an eine
TList wagen, was gar kein so schlechter Einstieg in das Thema "
Objekte" wäre.
Oder Du kannst auch mal den Versuch unternehmen, eine
verkettete Liste selbst zu programmieren. Dazu braucht es ja nicht viel: Wenn Du Deiner Record-Deklaration noch ein Feld "
NaechstePerson : {Zeiger auf Record:} ^TPerson" hinzufügen würdest, hättest Du schon eine
einfach verkettete Liste. Noch ein Feld namens "
VorigePerson", und Deine Liste wäre schon
doppelt verkettet - okay:
Verwalten mußt Du das Ganze dann natürlich auch noch, also die entsprechenden Einträge setzen bzw. aktualisieren. Aber so richtig nützlich ist das Ganze nicht wirklich, denn Du müßtest Dich dann jedemal zu einem bestimmten Eintrag durchhangeln, während Du bei Arrays oder Listen viel einfacher per Index auf jeden einzelnen Eintrag zugreifen kannst. Das wäre also eine ganz nette Übung, mehr aber auch nicht.
Wie kannst Du Dir diese Dinge nun am effizientesten erschließen? Wichtig ist zunächst mal, daß Du Dich mit dem Hilfesystem von Lazarus vertraut machst. Das ist nicht wirklich anfängertauglich, aber Du brauchst es ständig im Hintergrund - das wird später immer wichtiger werden. Ansonsten ist das ständige Googeln auch nicht das beste Mittel: Versuch mal, eine lesbare Einführung in die Sprache Pascal aufzutreiben und arbeite die (systematisch oder auch querbeet, je nach persönlichen Vorlieben) durch . Das an einem Beispiel-Adressbuch durchzuspielen, machst Du schon ganz richtig!
Gruß Rüdiger