Einzelnen Beitrag anzeigen

StuRic

Registriert seit: 11. Jun 2013
8 Beiträge
 
#1

dynamische Verwaltung von Objekten - Fahrstuhlsteuerung

  Alt 11. Jun 2013, 18:14
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!

Geändert von StuRic (11. Jun 2013 um 21:31 Uhr)
  Mit Zitat antworten Zitat