![]() |
Re: Selsames verhalten bei True abfrage
Zitat:
habs jetzt so geändert das es Sprachunabhängig ist.. gruss Emil |
Re: Selsames verhalten bei True abfrage
Zitat:
Das ist so nicht ganz richtig. ein "if a=true then " wird umgesetzt in
Delphi-Quellcode:
ein "if a then" wird umgesetzt in
cmp a,1
jnz xxxx // wenn a nicht true ist
Delphi-Quellcode:
ob die CPU gegen 0 oder 1 prüft macht (vom Aufwand her) keinen Unterschied.
cmp a,0
jz xxx // wenn a = 0 also false ist Ansonsten hast Du natürlich Recht mit der Aussage "nie mit True vergleichen.." |
Re: Selsames verhalten bei True abfrage
Auf True sollte man halt nie prüfen, es sei denn man will/muß ganz genau wissen, ob es wirklich mit True identisch ist.
also im Normalfall immer nur: B not B oder maximal noch, B <> False da False immer nur 0 ist. (wobei es eigentlich besser wäre gleich auf alle "=/<> true/false" zu verzichten) Und nochmals: nein, kein Bug ... schließlich will man manchmal auch genau dieses Verhalten (B = True, also True <> True) haben. |
Re: Selsames verhalten bei True abfrage
Zu
AppOwnHdcW2 = True (*) Also mal grundsätzlich falls AppOwnHdcW2 boolean ist, dann dürfte es eigentlich kein Problem geben !!! Ist jedoch AppOwnHdcW2 ein Handle, so wie es aussieht, so hat sich eingebürgert : if AppOwnHdcW2 then Grund : Handle = nil -> Bedingung wird als false interpretiert, ansonsten true. Es gilt also folgende Regel : Vergl. mit true/false nur bei boolean ansonsten je nach Programmiersprache erstmal schauen, wie: if wert then interpretiert wird. |
Re: Selsames verhalten bei True abfrage
Zitat:
Delphi-Quellcode:
oder
if b
Delphi-Quellcode:
und auf nicht if b = true
if not b
|
Re: Selsames verhalten bei True abfrage
Zitat:
Bei Boolean gilt auch grundsätzlich der Hinweis von mkinzler... |
Re: Selsames verhalten bei True abfrage
zu mkinzler :
natürlich hast du da recht, da kürzer. jedoch ist if (a=false) zumindest nicht falsch, falls a boolean ist. Gruß G.M. |
Re: Selsames verhalten bei True abfrage
hab's dochauch schon gesagt ... mit/auf FALSE könnte man prüfen, aber da es mit TRUE nicht geht, ist es besser dieses gleich ganz sein zu lassen.
Viele machen ja schließlich nur das nach, was sie irgendwo sehn und denken sich womöglich mit FALSE arbeiten ja viele, warum soll ich's dann nicht auch mit TRUE versuchen ... und irgendwann landen die dann wieder hier und wundern sich weil irgendwas nicht geht. |
Re: Selsames verhalten bei True abfrage
Zitat:
Delphi-Quellcode:
var
lb: LongBool; b: Boolean; begin lb := True; { 83C8FF or eax,-$01 } b := lb; { 83F801 cmp eax,$01 1BC0 sbb eax,eax 40 inc eax } if b = True then { 3C01 cmp al,$01 7505 jnz +$05 } ShowMessage('Ist True'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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