Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#22

AW: Fehlermeldung beim Schreiben in der Registry

  Alt 2. Aug 2021, 17:12
if B then

entspricht "logisch" einem

if B <> False then
aber in Real ist Letzeres natürlich ein cmp al,$00; jz $********

In Worten:
"du bist irgendein Mensch"
gegen
"du bist genau dieser Mensch"

Delphi-Quellcode:
var B: Boolean;

B := Boolean(2);

if B then Beep; // if Ord(B) <> 0 then
if not B then {Kein}Beep; // if Ord(B) = 0 then
if B = True then {Kein}Beep;
if B = False then {Kein}Beep;
if B = Boolean(2) then Beep;
Boolean und ByteBool sind 1 Byte groß, nicht 1 Bit, also haben 1*False und 255*True, aber die Konstante "True" entspricht nur genau einem der vielen True's.
Und beim LongBool sind es sogar über 4 Milliarden "True".

Boolean: True = $01 aka +1
ByteBool: True = $FF aka -1
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Aug 2021 um 18:00 Uhr)
  Mit Zitat antworten Zitat