tw6797a.pp 644 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. { %fail }
  2. program intfbug2;
  3. {$ifdef fpc}
  4. {$mode objfpc} {$H+}
  5. {$endif fpc}
  6. uses
  7. Classes, SysUtils;
  8. type
  9. IMyCom1 = interface
  10. procedure A1;
  11. end;
  12. IMyCom2 = interface
  13. procedure A2;
  14. end;
  15. TMyComCorba = class(TInterfacedObject, IMyCom1, IMyCom2)
  16. procedure A1;
  17. procedure A2;
  18. procedure B;
  19. end;
  20. procedure TMyComCorba.A1;
  21. begin
  22. WriteLN('Com1');
  23. end;
  24. procedure TMyComCorba.A2;
  25. begin
  26. WriteLN('Com2');
  27. end;
  28. procedure TMyComCorba.B;
  29. begin
  30. WriteLN('Corba');
  31. end;
  32. var
  33. I: IUnknown;
  34. A1: IMyCom1;
  35. A2: IMyCom2;
  36. begin
  37. I := TMyComCorba.Create;
  38. A1 := I as IMyCom1;
  39. A1.A1;
  40. A2 := I as IMyCom2;
  41. A2.A2;
  42. end.