Hallo liebe Community,
ich brauch eure Hilfe zu folgendem Problem: Ich will eine Fahrstuhlsteuerung programmieren, die eine beliebige Anzahl von Fahrstühlen, Etagen etc. verwalten & steuern kann. Die Lösung soll dabei objektorientiert gelöst werden. Daher war mein erster Gedanke bei der Steuerungsklasse eine Liste aller Fahrstühle einzufügen. Das sieht momentan so aus:
Code:
//_______Steuerung__________________
pTFstKa = ^VFstKa;
VFstKa = record
FstKaX: ^Fahrstuhlkabine; //Fahrstuhlkabine ist als Klasse deklariert
next: PTFstKa;
end;
Steuerung = class
id: cardinal;
pFstKa: pTFstKa;
procedure Fahrstuhl_Hinzu(id_in:cardinal; zulGewicht_in, EtageV_in, EtageB_in: integer; sNiAnEt: string);
function Suche_Fahrstuhl(Suchkriterium, id_in, Stelle: cardinal):pTFstKa;
constructor init(id_in: cardinal);
destructor destruct();
end;
Die Liste wird dabei folgendermaßen angelegt:
Code:
procedure Steuerung.Fahrstuhl_Hinzu(id_in:cardinal; zulGewicht_in, EtageV_in, EtageB_in: integer; sNiAnEt: string);
var FstKa: Fahrstuhlkabine;
p,h: pTFstKa;
begin
//Listenelement hinzufügen
p:=pFstKa;
new(h);
h^.next:=nil;
//Objektinitialisierung:
FstKa:= Fahrstuhlkabine.Init(id_in, zulGewicht_in, EtageV_in, EtageB_in, sNiAnEt);
h^.FstKaX:= @FstKa;
//an Liste anfügen
if pFstKa=nil then pFstKa:=h else
begin
while p^.next<>nil do begin
p:=p^.next;
end;
p^.next:=h;
end;
end;
Wenn ich nun mithilfe der Liste auf eine Instanz der Klasse "Fahrstuhlkabine" zugreife, bekomm ich leider eine Zugriffs-
Exception.
Code:
//________Laden der Aufzug-Eigenschaften des darzustellenden Aufzugs__________
index:= Combob_FstKa.ItemIndex;
p1:= Steuerung1.Suche_Fahrstuhl(2,0,index);
Form.Caption:= 'Aufzug - Nr:' + inttostr(p1^.FstKaX^.id); // <------ hier kommt dann die
Exception
....
Mit google konnte ich mein Problem leider nicht bewältigen. Lediglich hab ich herausgefunden, dass es schon vorgefertigte Listen(-arten) gibt. Daher: Bitte helft mir!
Danke schonmal im Vorraus.
Grüße Ric
Edit: Falls mein Problem nicht deutlich geworden ist o.Ä. bitte nachfragen. Hauptsache ich bekomm ein Feedback. Danke!