Entwickler-Ecke
Windows API - LongBool
lambruco - Fr 12.09.03 11:20
Titel: LongBool
Was ist ein LongBool ?? :shock:
Ist der Typ identisch mit boolean ?
Möchte eigentlich nur den Rückgabewert von EnumChildWindows ermitteln ?
DaRkFiRe - Fr 12.09.03 12:04
Also in meiner Windows-Unit steht BOOL = LONGBOOL;
Was ich damit sagen will: LONGBOOL = BOOL = BOOLEAN = TRUE / FALSE
AndyB - Fr 12.09.03 12:24
| DaRkFiRe hat folgendes geschrieben: |
| Was ich damit sagen will: LONGBOOL = BOOL = BOOLEAN = TRUE / FALSE |
Nicht ganz.
Byte(Boolean(False)) = 0
Byte(Boolean(True)) = 1
Byte(BOOL(False)) = 0
Byte(BOOL(True)) <> 0 // hier liegt der Unterschied
Wer also direkt auf True prüft kann bei API Funktionen sein Wunder erleben.
Muss nicht unbegingt True ergeben. Wenn APIFunction nun -1 oder 2 liefert ist das für BOOL auch TRUE. Jedoch wenn man es mit dem Boolean.True vergleicht macht der Compiler daraus ein
und das geht dann in die Hose.
Der Delphi-Compiler weiß von diesem Problem und wandelt Funktionsergebnisse, die vom Typ BOOL sind automatisch in den Boolean Typ um, womit es nicht zu obigem Problem kommen sollte.
lambruco - Fr 12.09.03 13:41
Heisst das, man sollte API-Funktionen immer auf false prüfen ??
also TRUE wäre dann API-Funktion <> FALSE ????
AndyB - Fr 12.09.03 15:18
Man kann
benutzen, da der Compiler dann auf <> False prüft. Wenn man aber implizit auf True prüft:
Delphi-Quelltext
1:
| if APIFunction = True then |
kann das nach hinten los gehen, muss aber nicht. Eben eine tickende Zeitbombe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!