[fpc-devel]Delphi incompatibility again!

Peter Vreman peter at freepascal.org
Mon Apr 2 15:48:48 CEST 2001


> Hello,
> Again a Delphi incompatibility is found! At least with Delphi 3. Essence: the internals
of
longbool, wordbool and bytebool
> types in FPC aren't the same as in Delphi 3. That causes serious problems by porting
Delphi code with typecastings
> like word(a_wordbool_variable), e.g. by calculating of index offsets in arrays!
> 
> A sample which demonstrates differences between FPC and Delphi 3:
> 
> {$ifdef fpc}
> {$mode delphi}
> {$endif}
> {$apptype console}
> const
>  x:longbool=true;
>  y:wordbool=true;
>  z:bytebool=true;
>  w:boolean=true;
> begin
>  writeln(longint(x),' ',word(y),' ',byte(z),' ',byte(w));
> end.
> 
> Output:
> 1) sample is compiled by FPC:
> 1 1 1 1
> 2) sample is compiled by Delphi 3:
> -1 65535 255 1
> 
> Cause (only essence, I did not search details in compiler source):
> Delphi 3 sets ALL bits in variable to binary 1 if the variable value will be true and
its
type is
> longbool, wordbool or even bytebool (unlike boolean).
> Unlike Delphi, FPC uses actually only one bit.

The value of true in a boolean is undefined. All checks for booleans are done using checks
for zero or not zero.







More information about the fpc-devel mailing list