Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kommunikation zwischen Hauptanwendung und Plugin (https://www.delphipraxis.net/125090-kommunikation-zwischen-hauptanwendung-und-plugin.html)

RWarnecke 30. Nov 2008 16:33


Kommunikation zwischen Hauptanwendung und Plugin
 
Hallo zusammen,

ich habe den ersten Teil von sakuras Tutorial PlugIns in eigenen Anwendungen durchegelesen und ausprobiert. Es funktioniert auch alles soweit. Nur leider bekomme ich keine Kommunikation zwischen Hauptanwendung und PlugIn hin. Ich möchte gerne, dass zum Beispiel ein Label oder der Inhalt eines Memos ausgelsen wird und dann im PlugIn angezeigt wird.

Wie und was muss ich machen, damit mein Vorhaben funktioniert ?

RWarnecke 6. Dez 2008 12:24

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
*push* Hat keiner eine Idee für mich ?? *push* :spin:

mkinzler 6. Dez 2008 12:38

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Implemnetiere eine Funktion dafür im Plugin und exportiere diese

RWarnecke 6. Dez 2008 12:53

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Ich probiere es derzeit so. In meiner Hauptanwendung habe ich folgendes drinstehen :
Delphi-Quellcode:
type
//
// Declaration of class for the interface IApplication
//
  IApp = interface(IInterface)
    function GetTheCaption:string;
  end;
  TAppInf = class(TInterfacedObject, IApp)
  public
    function GetTheCaption: String;
  end;

...

implementation

...

{ TAppInt }

function TAppInf.GetTheCaption: string;
begin
  result := 'Das ist ein Test für ein Interface';
end;
Die Unit, die ich in der DLL und in der Hauptanwendung mit einfüge hat den folgenden Teil :
Delphi-Quellcode:
  IApp = interface(IInterface) ['{EE10386E-F8B8-44A1-8A88-D809B4EA1964}']
    function GetTheCaption:string;
  end;
In der DLL selber mache ich dann folgendes :
Delphi-Quellcode:
var
  PlgApp: IApp

...

procedure TPlugIn01.Execute;
begin
  Form1 := TForm1.Create(nil);
  Form1.Label1.Caption := PlgApp.GetTheCaption;
  Form1.Show;
end;
Was mache ich falsch ? Oder habe ich das Prinzip der Interfaces noch nicht verstanden ?

mkinzler 6. Dez 2008 12:57

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Hauptprogramm und Dll haben eigene Instanzen der VCL.
Deshalb Funktion für Ausgabe der Dll vom Hauptprogramm aufrufen.

RWarnecke 6. Dez 2008 13:06

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Zitat:

Zitat von mkinzler
Hauptprogramm und Dll haben eigene Instanzen der VCL.
Deshalb Funktion für Ausgabe der Dll vom Hauptprogramm aufrufen.

Wenn ich das jetzt richtig verstehe, dann muss das ganze genau anders herum sein, richtig ? Mein Vorhaben ist aber eigentlich bestimmte Funktionen für die Plugin's zur Verfügung zu stellen. Dann ist doch mein Denkansatz, so wie ich es jetzt mache mit den Interfaces falsch oder ?

mkinzler 6. Dez 2008 13:27

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Dlls unterstützen ja keine Objekte im Interface. Wie verbindest du die beiden Objekte (Hauptprogramm/Dll)?

RWarnecke 6. Dez 2008 13:39

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Zitat:

Zitat von mkinzler
Dlls unterstützen ja keine Objekte im Interface. Wie verbindest du die beiden Objekte (Hauptprogramm/Dll)?

Da bin ich mir jetzt etwas unsicher. Ich denke über die Klasse TAppInf. Die Klasse wird beim Starten der Anwendung erzeugt. Aber ich glaube, dass ich damit flasch liege oder ?

mkinzler 6. Dez 2008 13:44

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Über diese Klasse funktioniert es, es existieren aber verschiedene Objekte (eines im Hauptprogramme und jeweils ein Proxy-Objekt im Plugin)

RWarnecke 6. Dez 2008 13:59

Re: Kommunikation zwischen Hauptanwendung und Plugin
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von mkinzler
Über diese Klasse funktioniert es, es existieren aber verschiedene Objekte (eines im Hauptprogramme und jeweils ein Proxy-Objekt im Plugin)

Das verstehe ich nicht ganz. Ich deklariere doch im Hauptprogramm das Interface, die Klasse und setze noch die GUID fest. Mit der gleichen Unit erstelle ich doch auch die DLL. Das heißt jetzt für mich, dass ich doch mit dem gleichen Objekt arbeite oder nicht ?

Im Anhang die DLL und die Unit die mit den Deklarationen. Die Deklarationen im Hauptprogramm wie in Beitrag 4.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz