tbs0185.pp 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. Program bug0185;
  2. {shows some bugs with rangechecks}
  3. { readln from input changed to from a file to render it non-interactive }
  4. var s: String;
  5. i: integer;
  6. code: word;
  7. e: 0..10;
  8. f : text;
  9. Begin
  10. {$R-}
  11. s := '$fffff';
  12. val(s, i, code); {no range check error may occur here}
  13. Writeln('Integer($fffff) = ',i);
  14. assign(f,'tbs0185.tmp');
  15. rewrite(f);
  16. Writeln(f,'20');
  17. Writeln(f,'34');
  18. close(f);
  19. reset(f);
  20. Write('Enter the value 20 (should not give a rangecheck error): ');
  21. Readln(f,e);
  22. {$R+}
  23. s := '$ffff';
  24. val(s, i, code); {no range check error may occur here}
  25. Writeln('integer($ffff) = ', i,'(should not give range check error)');
  26. Writeln('Enter value from 0-10 to test Val rangecheck, another for subrange rangecheck: ');
  27. Readln(f,e);
  28. Writeln('If you entered a value different from 0-10, subrange range checks don''t work!');
  29. s := '65535';
  30. val(s, i, code); {must give a range check error}
  31. Writeln('Val range check failed!');
  32. close(f);
  33. erase(f);
  34. Halt(1);
  35. End.