Thema: Delphi Variable als Zeiger?

Einzelnen Beitrag anzeigen

neomic
(Gast)

n/a Beiträge
 
#1

Variable als Zeiger?

  Alt 22. Sep 2007, 13:56
Hallo,

ich arbeite zur Zeit an einem kleinem Schulprojekt, einer Ampelkreuzung-Simulation...
Das Projekt ist Open Source und steht unter keinem Copyright. Es kann unter www.neomic.xail.net/info/Ampelkreuzung.zip
heruntergeladen werden (Code ist ausreichend kommentiert ).
Alles funktioniert so wie es soll, bis auf, dass wenn die Auto aus dem Sichtbarkeitsbereich (= der Form) verschwinden, diese auch zerstört werden sollen und der Speicher freigegeben werden soll...

Folgendes Problem:

Autos dürfen nicht aufeinanderfahren: Deshalb kennt jedes Auto, das Auto vor sich

Delphi-Quellcode:
procedure TAuto.SetzeAuto(pAuto:TAuto);
begin
        kAuto:=pAuto;
end;
Wenn kein Auto davor steht ist der Wert "nil"

Dann durch die Abfrage:

Delphi-Quellcode:
// Wenn Ampel nicht rot oder rot-gelb ist und kein Auto davor oder das Auto davor weit genug weg dann fahre!
procedure TAutoVonOben.Bewegen(Sender:TObject);
begin
        if not (((kAmpel.GetStatus=1) or (kAmpel.GetStatus=2)) and (Top=150)) and
        ((kAuto=nil) or ((kAuto<>nil) and (kAuto.Top-Width-ABSTAND>Top))) then
        Top:=Top+1;
end;
Wenn das Auto vor im "nil" ist fahre...
Aber wenn ich während der Laufzeit ein Auto zerstöre und die Variale nil setze, bleibt der Wert kAuto.Top genauso wie vor dem Zerstören bzw. es ist garnicht "nil"...

Ist es möglich, das kAuto keine Referenz oder Zeiger auf das Auto ist, sondern eine Kopie?
Wie kann ich das Problem lösen?

Ich wäre um jede Hilfe dankbar!

greeetz neomic
  Mit Zitat antworten Zitat