On 02.07.2017 19:39, Florian Klämpfl wrote:
So this means:

var
   b : boolean;

begin
   b:=boolean(3);
   if b then
     writeln(true)
   else if not(b) then
     writeln(false)
   else
     writeln(ord(b));
end.

writes 3 in delphi?

IMO you picked up a Delphi compiler bug/undocumented feature (call it as you want). "if boolean(3) then A" executes A contrary to the documentation - the docs say something different then the compiler does. You should not use it as an argument but create an issue report on Embarcadero's Quality Central so that they either fix the documentation or fix the compiler.

Whereas:
case boolean(3) of
  True: A;
  False: B;
else
  C;
end;

is documented to execute C and the compiler executes C => good.

Ondrej
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to