Thema: Delphi Arbeit mit Interfaces

Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#1

Arbeit mit Interfaces

  Alt 25. Jun 2018, 19:05
Delphi-Version: 7
Servus,

nehmen wir an ich will für das einbinden von DLLs ein kleines Plugin-System machen.

Delphi-Quellcode:
type
  IPlugin = Interface
  []
    procedure Init;
    procedure finalize;
   ....
  end;

  IFoo = interface
  []
    procedure DoSomething;
  end;
die DLL exportiert

Delphi-Quellcode:
  function GetPlugin: IPlugin
  begin
    result := ....
  end;
IPlugin soll dabei als allgemeines Interface dienen um so Dinge wie evtl. notwendige DB-Zugriff zu initialisieren bzw. allgemeine Initialisierung und Freigaben in der DLL zu kapseln. IFoo ist die eigentliche "Funktion" der DLL. Kann ich diese einfach "Huckepack" übergeben:

DLL:
Delphi-Quellcode:
 
type
  TFoo = class(TInterfacedObject, IPlugin, IFoo)
  ....
  end;

und dann in der Anwendung:


Delphi-Quellcode:
Type
  TFoo = function: IPlugin;


var
  bar: TFoo;
  plugin: IPlugin;
  Foo: IFoo;
begin
  bar := GetProcAdress(Handle, 'GetPlugin');
  if Assigned(bar) then
  begin
    plugin := bar();
    plugin.init;
    plugin.QueryInterface(IFoo, Foo);
    
    Foo.DoSomething;
  
  end;
end;

Sprich: Darf ich hier lieb nachfragen, ob mein benötigtes Interface von der DLL implementiert wird um dann damit weiter zu arbeiten oder spricht irgend etwas dagegen?
  Mit Zitat antworten Zitat