tinterface8.pp 663 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. { %VERSION=1.1 }
  2. {$ifdef fpc}
  3. {$mode objfpc}
  4. {$endif}
  5. type
  6. ITest = interface(IUnknown)
  7. procedure DoSomething;
  8. end;
  9. TMyClass = class(TInterfacedObject, ITest)
  10. procedure DoSomething;
  11. end;
  12. var
  13. i : longint;
  14. procedure TMyClass.DoSomething;
  15. begin
  16. inc(i);
  17. end;
  18. procedure DoTest(const ATest: ITest);
  19. begin
  20. ATest.DoSomething;
  21. end;
  22. procedure DoTest2(ATest: ITest);
  23. begin
  24. ATest.DoSomething;
  25. end;
  26. type TMyClassCopy = type TMyClass;
  27. var
  28. c: ITest;
  29. begin
  30. i:=0;
  31. c := TMyClassCopy.Create;
  32. DoTest(c);
  33. DoTest2(c);
  34. if i<>2 then
  35. begin
  36. writeln('Problem with passing interfaces as parameters');
  37. halt(1);
  38. end;
  39. end.