tb0041.pp 1005 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. { Old file: tbs0046.pp }
  2. { problems with sets with values over 128 due to sign extension (already fixed ) but also for SET_IN_BYTE }
  3. program test;
  4. {$R-}
  5. {$ifdef fpc}
  6. {$ifdef go32v2}
  7. uses
  8. dpmiexcp;
  9. {$endif}
  10. {$endif}
  11. type byteset = set of byte;
  12. bl = record i,j : longint;
  13. end;
  14. const set1 : byteset = [1,50,220];
  15. set2 : byteset = [55];
  16. var i : longint;
  17. b : bl;
  18. function bi : longint;
  19. begin
  20. bi:=b.i;
  21. end;
  22. begin
  23. set1:=set1+set2;
  24. writeln('set 1 = [1,50,55,220]');
  25. i:=50;
  26. if i in set1 then
  27. writeln(i,' is in set1');
  28. i:=220;
  29. if i in set1 then
  30. writeln(i,' is in set1');
  31. i:=$100+220;
  32. if i in set1 then
  33. writeln(i,' is in set1');
  34. i:=-35;
  35. if i in set1 then
  36. writeln(i,' is in set1');
  37. b.i:=50;
  38. i:=$100+220;
  39. if i in [50,220] then
  40. writeln(i,' is in [50,220]');
  41. if Bi in [50,220] then
  42. writeln(b.i,' is in [50,220]');
  43. b.i:=220;
  44. if bi in [50,220] then
  45. writeln(b.i,' is in [50,220]');
  46. B.i:=-36;
  47. if bi in [50,220] then
  48. writeln(B.i,' is in [50,220]');
  49. end.