tw1132.pp 525 B

12345678910111213141516171819202122232425262728
  1. program BugDemo2;
  2. type
  3. MyRecordType =
  4. record
  5. RecordElement1 : word;
  6. RecordElement2 : word;
  7. end;
  8. var
  9. MyRecord : MyRecordType;
  10. MyPointer1,MyPointer2 : pointer;
  11. begin
  12. with MyRecord do
  13. begin
  14. { next statement crashes the compiler }
  15. MyPointer1 := addr(RecordElement2);
  16. { next statement is OK }
  17. MyPointer2 := addr(MyRecord.RecordElement2);
  18. end;
  19. if MyPointer1<>MyPointer2 then
  20. begin
  21. Writeln('Error with addr() and with statement');
  22. halt(1);
  23. end;
  24. end.