123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- procedure error(const s: string);
- begin
- writeln('error: ',s);
- halt(1);
- end;
- procedure testlohiword;
- var
- w: word;
- i: smallint;
- begin
- w := $1234;
- i := $1234;
- if lo(w) <> (w and 255) then
- error('lo word');
- if lo(i) <> (i and 255) then
- error('lo integer');
- if hi(w) <> (w shr 8) then
- error('hi word');
- if hi(i) <> (i shr 8) then
- error('hi integer');
- end;
- procedure testlohilong;
- var
- w: cardinal;
- i: longint;
- begin
- w := $12345678;
- i := $12345678;
- if lo(w) <> (w and $ffff) then
- error('lo cardinal');
- if lo(i) <> (i and $ffff) then
- error('lo longint');
- if hi(w) <> (w shr 16) then
- error('hi cardinal');
- if hi(i) <> (i shr 16) then
- error('hi longint');
- end;
- procedure testlohiqword;
- var
- w: qword;
- i: int64;
- begin
- w := $12345678;
- w := w shl 32;
- w := w or $98765432;
- i := int64(w);
- if lo(w) <> (cardinal(w)) then
- error('lo qword');
- if longint(lo(i)) <> (longint(w)) then
- error('lo int64');
- if hi(w) <> (w shr 32) then
- error('hi qword');
- if hi(i) <> (i shr 32) then
- error('hi int64');
- end;
- begin
- testlohiword;
- testlohilong;
- testlohiqword;
- end.
|