[fpc-pascal] array [boolean] and typecasting fail
    Martin 
    lazarus at mfriebe.de
       
    Sat Oct 24 01:19:50 CEST 2009
    
    
  
David Emerson wrote:
> I did cast it to boolean! That's why it smells like a bug
>>> var
>>>   b : boolean;
>>>
>>> begin
>>>   b := boolean (6 and 4);
>>>   writeln (t_or_f [b]);
>>>       
A type cast does not changes the value. A typecast merely allows you to 
store a value into a field of a different type
same for enums (boolean is an enum)
type t = (zero, one, two);
var a: t;
a := t(1); // ok
a := t(5); // compiles, gives rangecheck if enabled, otherwise works, 
but a is not any of the enum-values
boolvar := boolean(4); // just puts 4 into the variable. doesn't make 4 
a valid boolean value
So you need to do
  b := (6 and 4) <> 0; // that is a boolean value
  writeln (t_or_f [b]);
Martin
    
    
More information about the fpc-pascal
mailing list