tw2185.pp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. { Source provided for Free Pascal Bug Report 2185 }
  2. { Submitted by "Andrew Johnson" on 2002-10-16 }
  3. { e-mail: [email protected] }
  4. Program BugTest;
  5. {$Mode ObjFPC}{$H+}
  6. {off $Define InvertOrder}
  7. Uses Classes;
  8. Type
  9. TMyClass = Class(TPersistent)
  10. public
  11. dummy : Longint;
  12. {$IfNDef InvertOrder}
  13. procedure Assign(Source : TPersistent); override;
  14. procedure Assign(const value: integer);
  15. {$Else InvertOrder}
  16. procedure Assign(const value: integer);
  17. procedure Assign(Source : TPersistent); override;
  18. {$EndIf InvertOrder}
  19. Constructor Create;
  20. end;
  21. procedure TMyClass.Assign(Source : TPersistent);
  22. begin
  23. If Source is TMyClass then
  24. Dummy := TMyClass(Source).dummy;
  25. end;
  26. procedure TMyClass.Assign(const value: integer);
  27. begin
  28. Dummy := value;
  29. end;
  30. Constructor TMyClass.Create;
  31. begin
  32. Inherited Create;
  33. end;
  34. Const
  35. ConstDummy : Integer = 3;
  36. var
  37. Test1, Test2 : TMyClass;
  38. begin
  39. Test1 := TMyClass.Create;
  40. Test2 := TMyClass.Create;
  41. Test1.Dummy := 2;
  42. Test2.Dummy := 1;
  43. Writeln(Test2.Dummy);
  44. Test2.Assign(Test1);
  45. Writeln(Test2.Dummy);
  46. Test2.Assign(ConstDummy);
  47. Writeln(Test2.Dummy);
  48. Test1.Destroy;
  49. Test2.Destroy;
  50. end.