Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme bei if - then ... (https://www.delphipraxis.net/149731-probleme-bei-if-then.html)

Peter-Pascal 28. Mär 2010 21:19


Probleme bei if - then ...
 
Hallo,

vielleicht ist es auch etwas spät und ich sehe den Wald vor lauter Bäumen nicht, aber ... :wall:

folgender Code: (es geht um die fett geschriebene Zeile)
Delphi-Quellcode:
type
TAbschlussRecord = record
    KontoNr : integer;
    Soll, Haben : currency;
  end;

  TAbschlussArray = array of TAbschlussRecord;

a ist vom Typ TAbschlussRecord

//kein Konto vorhanden, freien Eintrag suchen
  if frei = -1 then
    for I := 0 to length(a) - 1 do
      if a[i].KontoNr = 0 then //Diese Bedingung wird wahr ...    
      begin
        frei := I;
        exit;
      end;
Die Bedingung ist wahr, nur statt die Folgeanweisung abzuarbeiten, springt Delphi an das Ende der Routine. Die zwei Anweisungen frei := i; und exit; macht delphi nicht.
Seht ihr irgendwo einen Syntaxfehler? Ohne begin und end arbeiteit Delphi die Anweisung sauber ab.

Gruß
Peter

[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten mal bitte selber setzen. Mfg, Luckie[/edit]

SirThornberry 28. Mär 2010 21:22

Re: Probleme bei if - then ...
 
Wenn er an das Ende der Routine springt wird es vielleicht doch ausgeführt. Ich denke es hat eher damit zu tun das der Compiler etwas weg optimiert. Schalte am besten mal die Optimierung aus und baue das Projekt neu.

jfheins 28. Mär 2010 21:22

Re: Probleme bei if - then ...
 
Wahrscheinlich steht der Code in einer Prozedur/Funktion.

Da am ende exit kommt, ist die Zuweisung
Delphi-Quellcode:
frei := I;
total irrelevant und wird wegoptimiert. Das Exit ist sowiso ein Sprung zum Prozedurende.

Zum Debuggen also einfach mal die Optimierung abschalten oder Code schreiben, der was bewirkt (wird dann auch nicht wegoptimiert ;) )

Peter-Pascal 28. Mär 2010 21:32

Re: Probleme bei if - then ...
 
hmmm, vielen Dank bisher,

wie schalte ich die Optimierung aus?

wieso macht Delphi das überhaupt weg? In der Tat beim Debuggen führt er den Teil nicht aus.

jfheins 28. Mär 2010 21:35

Re: Probleme bei if - then ...
 
Zitat:

Zitat von Peter-Pascal
wie schalte ich die Optimierung aus?

http://www.google.de/search?q=delphi...ng+ausschalten
Zitat:

wieso macht Delphi das überhaupt weg? In der Tat beim Debuggen führt er den Teil nicht aus.
Haben wir dir doch gesagt - weil der Code unnütz ist, und nichts bewirkt - und die optimierung ist eben genau dafür da, unnützen Ballast zu entfernen.

Peter-Pascal 28. Mär 2010 21:37

Re: Probleme bei if - then ...
 
ich habe es begriffen, es gibt Tage da sollte man nicht an den PC ...

Ich wollte nicht exit schreiben, sondern break, es sollte nur die Schleife abgebrochen werden. So funktioniert es.

Und jetzt leuchtet mir ein, warum Delphi das wegoptimiert, wenn der Compiler exit findet.

Nichtdestotrotz, wie schalte ich die Optimierung aus?

Vielen Dank nochmals
Gruß
Peter

Luckie 28. Mär 2010 21:40

Re: Probleme bei if - then ...
 
Zitat:

Zitat von Peter-Pascal
Nichtdestotrotz, wie schalte ich die Optimierung aus?

Hast du den Beitrag von jheins gelesen?

SimonRap 28. Mär 2010 21:44

Re: Probleme bei if - then ...
 
würde das nich ir wie so {O+-} gehen?

Peter-Pascal 28. Mär 2010 21:49

Re: Probleme bei if - then ...
 
Danke Lucki, den Beitrag habe ich gelesen.

Die Beiträge haben sich überschnitten.

Ich bekomme das mit dem schönen eingerücktem Quellcode nicht hin... übe die ganze Zeit, will einfach nicht klappen

Peter-Pascal 28. Mär 2010 21:53

Re: Probleme bei if - then ...
 
.. auch das hat jetzt geklappt, doch ein versöhnlicher abend. Man muß den Code markieren und auf Quellcode drücken


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.

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