Mega Code Archive
Assigning a comp type to an integer
Question:
I am using a comp type (64 bit integer) and would like to assign
the value to an integer. Using the Trunc function is too slow. Is
there a better way?
Answer:
The VCL defines a type called TLargeInteger that is a comp type
that is broken down into the integer components Low and High. You
could simply cast the comp as a TLargeInteger and access one of it's
members, and avoid using floating point functions to get at it's
underlying integer value.
Example:
procedure TForm1.Button1Click(Sender: TObject);
var
c : comp;
i : integer;
begin
c := $FFFFFF;
// i := c; This won't work - incompatible types!
i := Trunc(c); // This works but has additional overhead;
i := TLargeInteger(c).LowPart;
end;