hpoppe@ncar.ucar.edu (Herb Poppe) (05/03/91)
The TP 3.0 program below illustrates a problem I am having with type
casting that is driving me nuts. A set of 0..7 has a size of 1. A
SignedByte has a size of 1. Yet when I type cast the set of 0..7 to a
SignedByte the compiler complains that:
"Expression can't be cast to the specified type."
How do I interpret the bits in a set of 0..7 as a byte?
-----------------
program SetTest;
type
EightBits = (bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7);
Port = set of EightBits;
var
dataSize: Integer;
byteSize: Integer;
portData: Port;
portByte: SignedByte;
begin
dataSize := sizeof(portData); { = 1 }
byteSize := sizeof(portByte); { = 1 }
portData := [bit0, bit7];
portByte := SignedByte(portData); {Expression can't be cast to the
specified type.}
end.
Herb Poppe hpoppe@ncar.ucar.edu
NCAR (303) 497-1296
1850 Table Mesa Dr.
Boulder, CO 80307-3000siegel@world.std.com (Rich Siegel) (05/03/91)
In article <11271@ncar.ucar.edu> hpoppe@ncar.ucar.edu (Herb Poppe) writes: >The TP 3.0 program below illustrates a problem I am having with type >casting that is driving me nuts. A set of 0..7 has a size of 1. A >SignedByte has a size of 1. Yet when I type cast the set of 0..7 to a >SignedByte the compiler complains that: > >"Expression can't be cast to the specified type." > >How do I interpret the bits in a set of 0..7 as a byte? In standard Pascal, casts to or from set-types are illegal. However, a pointer cast can be used to effect the necessary result: s : set of 0..7; b : SignedByte; b := Ptr(@s)^; { recall that the "Ptr" type points to a SignedByte. } R. -- ----------------------------------------------------------------------- Rich Siegel Internet: siegel@world.std.com Software Engineer Applelink: SIEGEL Symantec Languages Group