Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Exit wird nicht ausgeführt ?!? (https://www.delphipraxis.net/151539-exit-wird-nicht-ausgefuehrt.html)

Dearmon 21. Mai 2010 23:45


Exit wird nicht ausgeführt ?!?
 
Hi,
ich hab ein Problem. Ich experimentiere gerade ein wenig mit Andorra rum und aus irgend einem Grund funktioniert eine Prozedur nicht so wie ich will:

Delphi-Quellcode:
    if (Not TBaseObject(Sprite).Active) or (Not TBaseObject(Sprite).Solid) then
      Exit;
selbst wenn ich nur die erste Bedingung überprüfe, funktioniert es einfach nicht. Beim debuggen steht, dass die Bedingung
, also "Not Active", True ist. Aber trotzdem führt der danach exit nicht aus. Beim starten des Programmes ist übrigens auch nicht dieser rote Punkt, an dem man einen debugpunkt setzten könnte, vorhanden.

Woran könnte das liegen/was mach ich falsch :/

Namenloser 21. Mai 2010 23:57

Re: Exit wird nicht ausgeführt ?!?
 
Hast du vielleicht die falsche Datei geöffnet? Manchmal kommt es vor, dass in einem anderen Ordner, der im Bibliotheks- bzw Suchpfad steht, eine gleichnamige, veraltete Datei liegt, die vom Compiler anstelle der richtigen eingebunden wird. Als erstes also mal danach Ausschau halten, dann zur Sicherheit alle .dcu-Dateien löschen und das Projekt neu erzeugen.

Dearmon 22. Mai 2010 00:02

Re: Exit wird nicht ausgeführt ?!?
 
Hab ich schon versucht, daran liegts nicht :/

Luckie 22. Mai 2010 00:13

Re: Exit wird nicht ausgeführt ?!?
 
Werden denn die Bedingungen auch erfüllt? wird ein ShowMessage angezeigt?

Dearmon 22. Mai 2010 00:20

Re: Exit wird nicht ausgeführt ?!?
 
Zitat:

Beim debuggen steht, dass die Bedingung
, also "Not Active", True ist
und ja, alles wird ausgeführt, nur das Exit halt nicht.

Luckie 22. Mai 2010 00:21

Re: Exit wird nicht ausgeführt ?!?
 
Dann ersetze doch mal das Exit durch ein ShowMessage, dann weißt du, ob er überhaupt in den Block reingeht.

Ist da noch ein try-finally-Block drumherum?

Dearmon 22. Mai 2010 00:26

Re: Exit wird nicht ausgeführt ?!?
 
Mit
Zitat:

alles wird ausgeführt
war sowas wie Showmessage, Beep etc gemeint.
Nope, die ganze Prozedur hab ich oben gepostet, mehr steht nicht drinn

Luckie 22. Mai 2010 00:31

Re: Exit wird nicht ausgeführt ?!?
 
Wenn das die ganze Prozedur ist, dann ist er doch so wie so am Ende der Prozedur.

Delphi-Quellcode:
procedure Foo;
begin
  if (Not TBaseObject(Sprite).Active) or (Not TBaseObject(Sprite).Solid) then
    Exit;
end;

Dearmon 22. Mai 2010 00:38

Re: Exit wird nicht ausgeführt ?!?
 
was nichts daran ändert dass die exit Zeile nicht aufgerufen wird, was z.B. beim verärben der Prozedur via inherited wichtig wäre. Dazu kommt dass wenn ich was dadrunter schreibe das exit einfach übersprungen wird (was theoretisch das Gleiche wie mit dem inherited ergeben müsste)

himitsu 22. Mai 2010 00:46

Re: Exit wird nicht ausgeführt ?!?
 
Zitat:

Zitat von Dearmon
was nichts daran ändert dass die exit Zeile nicht aufgerufen wird,

Doch, genau daran ändert das was.

Wenn nach dem Exit sowieso nichts mehr kommt, dann wird dieser "unnütze" Befehl durch die Codeoptimierung entfernt.

Wenn du nach dem Exit noch dein Inherited hinschreibst, dann kommt ja noch Code danach und dann würde es nicht wegoptimiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz