At 20:22 17-3-2005, you wrote:
Hi,

first, sorry my bad english. I have post this and the next two
questions already in community (german language forum).


So far I could see it in the FPC sources, BOOL is declared as WINBOOL and this as longbool. In Windows general 0 mean False and any value <> 0 mean True. In the Windows API TRUE is declared as 1 (at 16, 32 and as well as 64 bit API).

Additionally there exist VARIANT_TRUE (type VARIANT_BOOL = 16 bit
unsigned Integer), which is declared as -1.

I don't know why, but Borland declared True as -1 resp. $FFFFFFFF for
the Windows boolean types. This cause problems with few Windows API
function, which expect 1 as TRUE. I don't know, whether there are
Windows API function, which expect -1, I have worked only with TP and
Delphi.

There are any compiler options in FPC to make FPC compatibel to
Borland, if anybody want to do this?

Can't find any description what is wrong with FPC in the above text



I have detect this, because I get a hint 'Type size mismatch, possible
loss of data / range check error', if I convert Bool to Boolean.

Simple example:

var
  B1: LongBool;
  B2: Boolean;
begin
  B1 := True;
  B2 := B1;
end;

Fixed


I have make some tests, apparently FPC use a automatic type convert,
similar to Delphi, which make sure, that the Boolean value is in a
valid range:

var
  B1: LongBool;
  B2: Boolean;
begin
  B1 := LongBool(-1);
  B2 := B1;
  ShowMessage(Format('%d %d', [Ord(B1), Ord(B2)]));
end;

output: '-1 1'.

If there is a type convert (instead of a type cast), the hint is
meaningless. The same hint appear, if I use a LongBool variable with a
Boolean parameter in a function.

Is this a bug?

Same fix as above


BTW: Is it meaningful, that the message is identical independent
whether the range check is on or off?
(type_w_smaller_possible_range_check und
type_h_smaller_possible_range_check)

The code is not always wrong, therefor it is a hint. But when range checks are enabled it is changed to a warning because there is a change that it'll be triggered at runtime.



Peter


_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to