Autor Beitrag
ScaVo
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 11.04.11 20:05 
Ich habe heute so fröhlich an meinem Rechner gesessen und zum Spaß ein wenig programmiert, als mir ein Fehler unterläuft den ich absolut nicht verstehe. Nach einigem gesuche habe ich folgenden Test in meinen Quelltext implementiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  if ARMP then begin
    sleep(1);
    if ARMP=true then begin
      sleep(1);
    end;
    if ARMP=false then begin
      sleep(1);
    end;
  end;

ARMP ist ganz nebenbei vom Typ boolean. Aber wie ist der Test im Debugmodus verlaufen? Nun, die Abfrage "if ARMP then" hat er bestätigt und den Block danach ausgeführt. Das Debugfenster zeigte mir an, dass ARMP den Wert true hat. Die Abfrage "if ARMP=true" hat Delphi dann aber nicht mehr ausgeführt - das hat mich irgendwie verwundert. Aber dass er dann auch (obwohl irgendwo es auch zu erwarten war) die Abfrage "if ARMP=false" nicht ausführte habe ich mich dann doch entschlossen euch mal wieder zu schreiben.

Ist euch soetwas auch schon mal passiert?
Wie lässt sich das beheben?

MfG Scavo

P.S.: Noch anzumerken ist, dass ich weiß, dass heute kein 1. April ist - auch wenn das ganze irgendwie nach einem Scherz klingt...
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 11.04.11 20:10 
NIEMALS NICHT BOOLEANS AUF TRUE VERGLEICHEN! :motz:

*wieder hinsetz*

*tief durchatme*

*auf user profile iconLuckie wart und schonmal einen Link mitliefer*: *klick*


;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: baka0815
ScaVo Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 11.04.11 20:15 
Hmm... leuchtet mir irgendwie ein... Danke!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.04.11 20:16 
Hier habe ich mal ein kleines gut verständliches Beispiel gebastelt, wann ein solcher Vergleich schief geht:
www.delphi-forum.de/....php?p=548760#548760
Und warum das auch vollkommen unlogisch ist:
www.delphi-forum.de/....php?p=560637#560637

Für diesen Beitrag haben gedankt: baka0815, Martok
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Mo 11.04.11 20:26 
Einen großen Fehler habt Ihr aber noch übersehen:
Der Anweisungsblock (Zeile zwei bis acht) wird nur ausgeführt, wenn ARMP true ist. In diesem Block kann daher eine Abfrage auf false (Zeile sechs) niemals funktionieren. Entweder ARMP ist true oder false. Beides zusammen geht nicht.

Für diesen Beitrag haben gedankt: beastofchaos