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