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
first
Code: 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.