tbs0267.pp 516 B

12345678910111213141516171819202122232425262728
  1. {$MODE objfpc}
  2. program procofobject_arg;
  3. type
  4. TProcOfObject = procedure of object;
  5. TTestClass = class
  6. procedure SomeMethod;
  7. end;
  8. procedure TTestClass.SomeMethod; begin end;
  9. // the following proc won't print i2 correctly
  10. procedure CrashProc(i1: Integer;method: TProcOfObject; i2: Integer);
  11. begin
  12. WriteLn('i1 is :', i1);
  13. WriteLn('i2 is :', i2);
  14. if i2<>456 then
  15. Halt(1);
  16. end;
  17. var
  18. instance: TTestClass;
  19. begin
  20. instance := TTestClass.Create;
  21. CrashProc(123, @instance.SomeMethod, 456);
  22. end.