On 8/29/22 11:33, Jean SUZINEAU via fpc-pascal wrote:
Le 29/08/2022 à 01:41, James Richters via fpc-pascal a écrit :
If a special function is needed for some COM thing or weird Winapi
thing, then that function should be part of the unit that needs it,
not modifying the generic function intended to be used for general
purpose applications output something that does not conform to other
Pascal Boolean datatypes and just confuses everyone.
Unfortunately, it's not just a few windows functions which use this
behaviour but the whole Windows API:
https://docs.microsoft.com/fr-fr/windows/win32/api/winuser/nf-winuser-getmessage?redirectedfrom=MSDN
The Microsoft BOOL datatype uses this convention so the whole
ecosystem is attracted to use it (other C program on windows, Delphi,
... )
I imagine it's more efficient at the assembler level to process the
result of functions returning boolean.
Or, it could be related to the (Visual) BASIC language. BASIC represents
false as 0 and true as -1, and Microsoft have been a major developer of
BASIC interpreters and compilers ever since their beginning. My guess
is, they used -1 to ensure better interoperability between Visual C++
and Visual Basic.
Nikolay
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal