durch einen Beitrag von corpsman bin ich auf diese Problematik gestoßen.
Ich habe folgendes Programm:
Code: Alles auswählen
program Project1;
{$MODE ObjFpc}
{$H+}
{$Interfaces Corba}
uses
  Classes, SysUtils;
type
  IFirst = interface
    procedure First;
  end;
  ISecond = interface
    procedure Second;
  end;
  TMyClass = class(TObject, IFirst, ISecond)
    public
      procedure First;
      procedure Second;
  end;
procedure TMyClass.First;
begin
  WriteLn('first');
end;
procedure TMyClass.Second;
begin
  WriteLn('second');
end;
var
  o: TObject;
  first: IFirst;
  second: ISecond;
begin
  o := TMyClass.Create;
  if o is IFirst then begin
    first := o as IFirst;
    first.First;
  end;
  if o is ISecond then begin
    second := o as ISecond;
    second.Second;
  end;
end.
Code: Alles auswählen
first
firstCode: Alles auswählen
type
  IFirst = interface['first']
    procedure First;
  end;
  ISecond = interface['second']
    procedure Second;
  end;Code: Alles auswählen
first
second
In der Freepascal-Doku steht dazu:
Habe ich da irgendetwas missverstanden?https://www.freepascal.org/docs-html/current/ref/refse45.html hat geschrieben:Normally, the GUIDs are only used in Windows, when using COM interfaces.