wir haben eine Einführung in OOP hinter uns und sollen nun ein Wartezimmer programmieren (scheint ein gern gewähltes Beispiel). Ich habe nun eine Klasse TPatient angelegt welche Name, Geburtsdatum und Krankenkasse enthält.
Wir sollen nun mit TList arbeiten und neue Patienten dort aufnehmen und sobald sie vom Wartezimmer ins Sprechzimmer zum Arzt gehen, sollen sie aus der Liste des Wartezimmers entfernt werden.
Ich habe nun eine Liste:TList; und sie mit Liste:=TList.Create; erzeugt. In meinem Formular habe ich einen Button für die Patientenaufnahme und die Ausgabe der Warteliste. Aber irgendwie klappt die Verbindung zwischen der Tlist und der Klasse TPatient nicht. Wenn ich zwei Patienten eingebe, bekomm ich zwar in der Liste zwei Patienen ausgeben, allerdings nur die Werte des letzten Patientens.
Folgendes ist mir einfach nicht klar und ich finde keine Antwort:
Kann der Pointer die Klasse selbst sein? Also z.b. A:^TPatient;?
Type sieht wie folgt aus:
Code: Alles auswählen
type
{ TFWartezimmer }
TFWartezimmer = class(TForm)
EName: TEdit;
EVorname: TEdit;
BAufnehmen: TButton;
BAusgabe: TButton;
MAusgabe: TMemo;
BDrannehmen: TButton;
EGeburtsdatum: TEdit;
EKrankenkasse: TEdit;
LName: TLabel;
LVorname: TLabel;
Lgeburtsdatum: TLabel;
LKasse: TLabel;
procedure BDrannehmenClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BAusgabeClick(Sender: TObject);
procedure BAufnehmenClick(Sender: TObject);
procedure Aufnehmen(P:TPatient);
procedure Ausgabe(P:TPatient);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
//P:TPatient;
Liste:TList;
Nr : Integer;
end;
var
FWartezimmer: TFWartezimmer;
P:TPatient;
A:^TPatient;
Code: Alles auswählen
procedure TFWartezimmer.BAufnehmenClick(Sender: TObject);
begin
New(A);
Aufnehmen(P);
A^:=P;
Liste.Add(A);
Nr:=Liste.Count-1;
end;
Bei dem Button der Ausgabe hab ich folgendes:
Code: Alles auswählen
procedure TFWartezimmer.BAusgabeClick(Sender: TObject);
VAR //i:Integer;
Nr:Integer;
begin
for Nr:=0 to Liste.Count-1 do
begin
A:=Liste.Items[Nr];
Ausgabe(P);
end;
end;
Vielleicht kann mir hier jemand helfen. Ich bin leider wirklicher Anfänger und kenn mich mit OOP nicht gut aus.
Vielen Dank,
das_karlchen