tlohi.pp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. procedure error(const s: string);
  2. begin
  3. writeln('error: ',s);
  4. halt(1);
  5. end;
  6. procedure testlohiword;
  7. var
  8. w: word;
  9. i: smallint;
  10. begin
  11. w := $1234;
  12. i := $1234;
  13. if lo(w) <> (w and 255) then
  14. error('lo word');
  15. if lo(i) <> (i and 255) then
  16. error('lo integer');
  17. if hi(w) <> (w shr 8) then
  18. error('hi word');
  19. if hi(i) <> (i shr 8) then
  20. error('hi integer');
  21. end;
  22. procedure testlohilong;
  23. var
  24. w: cardinal;
  25. i: longint;
  26. begin
  27. w := $12345678;
  28. i := $12345678;
  29. if lo(w) <> (w and $ffff) then
  30. error('lo cardinal');
  31. if lo(i) <> (i and $ffff) then
  32. error('lo longint');
  33. if hi(w) <> (w shr 16) then
  34. error('hi cardinal');
  35. if hi(i) <> (i shr 16) then
  36. error('hi longint');
  37. end;
  38. procedure testlohiqword;
  39. var
  40. w: qword;
  41. i: int64;
  42. begin
  43. w := $12345678;
  44. w := w shl 32;
  45. w := w or $98765432;
  46. i := int64(w);
  47. if lo(w) <> (cardinal(w)) then
  48. error('lo qword');
  49. if longint(lo(i)) <> (longint(w)) then
  50. error('lo int64');
  51. if hi(w) <> (w shr 32) then
  52. error('hi qword');
  53. if hi(i) <> (i shr 32) then
  54. error('hi int64');
  55. end;
  56. begin
  57. testlohiword;
  58. testlohilong;
  59. testlohiqword;
  60. end.