Einzelnen Beitrag anzeigen

StuRic

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

AW: dynamische Verwaltung von Objekten - Fahrstuhlsteuerung

  Alt 12. Jun 2013, 16:09
Moin,

Ich konnte mein Problem weiter eingrenzen:
Wenn ich eine Funktion zur Übergabe von Attributwerten wie folgt deklariere:
Delphi-Quellcode:
function Fahrstuhlkabine.test():integer;
begin
  result:=testvar; //<----Exception hier!
end;
...
function Steuerung.Test():cardinal;
begin
  result:=pFstKa^.FstKaX^.test();
end;
...
//Aufruf Main-Unit:
  test:= Steuerung1.Test();
  showmessage(inttostr(test));
So ensteht nach wie vor die Zugriffs-Exception ganz egal ob ich testvar als private, public oder property deklariere. Wenn ich mir allerdings einen festen Wert zurückgeben lasse, ist alles super:
Delphi-Quellcode:
function Fahrstuhlkabine.test():integer;
begin
  result:=1001 //<----keine Exception!
end;
...
function Steuerung.Test():cardinal;
begin
  result:=pFstKa^.FstKaX^.test();
end;
...
//Aufruf Main-Unit:
  test:= Steuerung1.Test();
  showmessage(inttostr(test));
Die Vermutung liegt nahe, dass irgendwas mit der Attribut-Deklaration faul ist,....aber was?^^

Für das bessere Verständnis hier die Deklaration meiner Klasse Fahrstuhlkabine :
Delphi-Quellcode:
FahrstuhlKabine = class
      F_id: cardinal;
      fahrtrichtung: bool; // 1 = hoch // 0 = runter
      in_Benutzung: bool;
      Fahrtzeit: real;
      gewaehlteEtagen: pgewEt;
      speed: real;
      EtageV, EtageB, zulGewicht: integer;
      niAnEt: pNiAnEt;
    private
      F_position, F_tatsGewicht: real;
    public
      testvar:integer;
      property id: cardinal read F_id write F_id;
      property position:real read F_position write F_position;
      property tatsGewicht:real read F_tatsGewicht write F_tatsGewicht;
      constructor init(id_in:cardinal; zulGewicht_in, EtageV_in, EtageB_in: integer; sNiAnEt: string);
      destructor destruct();
      function zielAnfahren(Ziel:integer):bool;
      procedure set_Zieletage();
      procedure Notruf();
      function lastprobe():bool;
      function geschwindigkeitsmessung():bool;
      procedure notfallbremsen();
      function test():integer;
    end;
Hat jemand eine Idee woran es liegen könnte?

Geändert von StuRic (12. Jun 2013 um 16:14 Uhr)
  Mit Zitat antworten Zitat