tinterface2.pp 613 B

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