AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Arbeit mit Interfaces

Ein Thema von Lemmy · begonnen am 25. Jun 2018 · letzter Beitrag vom 25. Jun 2018
 
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.387 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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz