![]() |
abs funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
habe ein Programm geschrieben, in dem Kugeln Raumschiffe treffen sollen. Das habe ich dann mit abs(... - ... < 1) gelöst, doch das Programm stürzt sofort ab. Danke schonmal für die Mithilfe. :) Grüße Timo ;)
Delphi-Quellcode:
procedure TForm1.TiRaumschiffTimer(Sender: TObject);
begin FOR r:=1 TO number DO begin IF Raumschiff[r] <> nil THEN begin Raumschiff[r].GoRight; ShRaumschiff[r].Left := Raumschiff[r].xCoord; IF Raumschiff[r].xCoord > 700 THEN begin Raumschiff[r].xCoord := -50; ShRaumschiff[r].Left := Raumschiff[r].xCoord; end; If (abs(Raumschiff[r].xCoord-Kugel[i].xCoord)<1) and (abs(Raumschiff[r].yCoord-Kugel[i].yCoord)<1) then begin Raumschiff[r].Destroy; Abgeschossen := Abgeschossen+1; end; end; end; LaRaumschiffe.caption := inttostr(Abgeschossen); end; |
Re: abs funktioniert nicht
- Debuggen? -> Welche Zeile?
- Mit Destroy gibt man keine Objekte frei. |
Re: abs funktioniert nicht
Wie in der OH steht, ruft man Destroy nicht direkt auf, :warn:
sondern nutzt Free. Wobei, da du auf NIL prüfst, solltest du ![]() |
Re: abs funktioniert nicht
Ich verstehe leider kein Wort :(
Was muss ich jetzt machen, damit es funktioniert ? :) Grüße Timo |
Re: abs funktioniert nicht
Delphi-Quellcode:
:
If (abs(Raumschiff[r].xCoord-Kugel[i].xCoord)<1) and (abs(Raumschiff[r].yCoord-Kugel[i].yCoord)<1) then begin Raumschiff[r].Free; Raumschiff[r]:=nil; Abgeschossen := Abgeschossen+1; end; : |
Re: abs funktioniert nicht
Verstehe deinen Ansatz, aber es geht immer noch nicht.
Habe mein Programm auch online gestellt, falls du es dir im Ganzen angucken möchtest. Grüße |
Re: abs funktioniert nicht
Schau dir einfach mal die Warnungen an, die dein Compiler dir ausspuckt und beheben diese. Dann läuft dein Programm einwandfrei.
Edit: Globale Variablen sind böse und so wenig wie nötig zu verwenden! |
Re: abs funktioniert nicht
Aber wenn ich i global mache, so wird sie bei abs(....[i]) wohl nicht erkannt, oder ?
Grüße :) |
Re: abs funktioniert nicht
Ich verstehe deine Probleme nicht.
Der Compiler sagt, dass die Laufvariable einer FOR-Schleife immer lokal deklariert sein muss. Also deklariere dein i und r lokal, dort wo deine Schleifen sind und fertig. Mach es doch nicht kompilzierter als es ist. |
Re: abs funktioniert nicht
Ja, das habe ich doch gemacht, aber nun verschwinden die Raumschiffe
bei Berührung mit der Kugel nicht und 'Abgeschossen' geht auch nicht hoch. :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz