tinterface2.pp 623 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. var
  27. c: ITest;
  28. begin
  29. i:=0;
  30. c := TMyClass.Create;
  31. DoTest(c);
  32. DoTest2(c);
  33. if i<>2 then
  34. begin
  35. writeln('Problem with passing interfaces as parameters');
  36. halt(1);
  37. end;
  38. end.