Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Interface Methoden Reihenfolge

  Alt 21. Mai 2018, 21:06
DLL-Exports können über Name und/oder Index erfolgen.

Interface-Methoden werden "ausschlißelich" durchnummeriert und der Methoden-Name hat in der Interface deklatation keinerlei Wirkung.

Ich weiß im Moment nicht, ob/wie man im Pascal/Delphi den Index definieren kann, außer automatisch über die Reihenfolge der Definition.



Auch der Interface-Name hat für Windos keine Funktion, denn das kennt nur die GUID.

Folgende Deklarationen sind somit identisch:
Delphi-Quellcode:
IMyInterface = interface
  ['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
  procedure TestProcedure1;
  function SomeValueReturningFunction: Integer;
  function AnotherFuntion: Boolean;
end;

jfdsakchdsiuhdjskxgfbjhdsgaf = interface
  ['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
  procedure nfkdhkjcndbsjkrhfjkdsnbfvkds;
  function jfkdsfhajiodsjcjkdsbnjkfhbdjksa: Integer;
  function fjdshfkjdhsgfjgdsjh: Boolean;
end;

IMyIntf = interface
  ['{C0970276-A593-4825-BA92-53FBF6CCC1E1}']
  procedure TestProcedure1;
  function SomeValueReturningFunction: Integer;
end;
IMyInterface = interface(IMyIntf)
  ['{C0970276-A593-4825-BA92-53FBF6CCC1F0}']
  function AnotherFuntion: Boolean;
end;
Es kommt ausschließlich auf Reihenfolge und Funktionssignaturen drauf an.

Das geht über die Vererbung hinaus, weswegen QueryInterface/_AddRef/_Release aus IInteface überall die selben ordinalen Werte hat und alle weiteren Methoden ab da hochzählen, über alle Hierarchien hinweg.
$2B or not $2B

Geändert von himitsu (21. Mai 2018 um 21:13 Uhr)
  Mit Zitat antworten Zitat