tw0891.pp 889 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. { this declaration: ;}
  2. {$ifdef FPC}
  3. {$mode TP}
  4. {$endif}
  5. var
  6. name_a : packed array[0..255] of char;
  7. const
  8. name_b : PChar = 't';
  9. begin
  10. { the FPC compiler (0.99.14a) will refuse to compile
  11. the line ; }
  12. name_a[0]:='x';
  13. name_a[1]:=#0;
  14. if (name_b <> name_a) then
  15. begin
  16. writeln(' a and b are different');
  17. end
  18. else
  19. writeln('address of name_a and name_b are equal');
  20. { while it works under Turbo Pascal (TP). ;}
  21. name_b:=@name_a;
  22. if name_a<>name_b then
  23. begin
  24. Writeln('Wrong result');
  25. Halt(1);
  26. end;
  27. {$ifdef FPC}
  28. if (name_b <> PChar(name_a)) then
  29. writeln(' a and b are different');
  30. { is a legal FPC line, but illegal in TP.}
  31. {$endif}
  32. { I used ; }
  33. if (name_b <> PChar(@name_a)) then
  34. writeln(' a and b are different');
  35. {because it seems to work for both compiler.}
  36. end.