AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

Ein Thema von romber · begonnen am 22. Mai 2013 · letzter Beitrag vom 26. Mai 2013
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 22. Mai 2013, 17:01
Wie realistisch ist das alles? Wie soll der Add-On am besten aussehen? Soll das eine DLL sein oder was am besten? Wie würdet Ihr das machen?
Ein paar Anregungen sind hier zu finden:

http://stackoverflow.com/questions/3...delphi-program

Eine Open Source Lösung ist der JvPluginManager aus der Jedi JCL , der ein Grundgerüst für DLL (und BPL) Plugins bereitstellt.

http://stackoverflow.com/a/366079/80901
http://www.delphipraxis.net/901951-post.html
Michael Justin
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 22. Mai 2013, 19:55
@mjustin

Vielen Dank für diese Link, sehr interessant!

Die von dem Dem schönen Günther vorgeschlagene Lösung, die Add-Ons als Server zu implementieren, ist eine gute Idee. Die wäre auch sehr einfach zu realisieren. Aber wenn man als alternative noch die DLL-Schnittstelle anbieten möchte, wie greift eine Funktion in der DLL auf die Funktionen im Hauptprogramm zu?

Sagen wir, ich habe jetzt im Hauptprogramm eine Function, die als Parameter einen String erwartet. Dieses String wird dann zu einem Objekt umgewandelt, geprüft/gefiltert und dann dem Benutzer angezeigt. Wenn ich jetzt eine zusätzliche überladene Variante dieser Funktion erstelle, in der ich alle unpassende Datentypen durch Windows API kompatible Datentypen ersetze, wie kann meine DLL auf diese Funktion zugreifen?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 22. Mai 2013, 21:28
Wenn ich jetzt eine zusätzliche überladene Variante dieser Funktion erstelle, in der ich alle unpassende Datentypen durch Windows API kompatible Datentypen ersetze, wie kann meine DLL auf diese Funktion zugreifen?
Indem du dem Add-On die Adresse der Funktion gibst (z.B. als Parameter einer Initialisierungsfunktion).
Wenn du das mit mehreren Funktionen machen willst, würde ich so etwas wie ein Interface benutzen.


Solltest du wirklich DLLs und Server unterstützen wollen, würde ich mich erst einmal auf die DLL-Schnittstelle beschränken und mögliche Verbindungen zu Servern über entsprechende DLL-Add-Ons ermöglichen.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 22. Mai 2013, 23:13
[QUOTE=BUG;1216123]
Indem du dem Add-On die Adresse der Funktion gibst (z.B. als Parameter einer Initialisierungsfunktion).
Wenn du das mit mehreren Funktionen machen willst, würde ich so etwas wie ein Interface benutzen.
Es wird erst mal nur eine Funktion aus dem Hauptprogramm in DLL aufgerufen. Ich denke, ich probiere es erst mal mit der esten Variante. Nennt sich das Callback-Funktion oder ist mit der Weitergabe der Adresse der Funktion an den Add-On etwas anderes gemeint?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 22. Mai 2013, 23:44
Nennt sich das Callback-Funktion oder ist mit der Weitergabe der Adresse der Funktion an den Add-On etwas anderes gemeint?
Jup, Callback-Funktion würde passen.
Ich weiß ja nicht, was du in der Funktion (in der DLL) so anstellst. Wenn die einen Thread erstellt, der dann irgendwann (nachdem die Funktion zurückgekehrt ist) die "Callback"-Funktion aufruft, würde ich nicht unbedingt mehr von Callback sprechen. Aber das ist Erbsenzählerei
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 23. Mai 2013, 12:33
Also ich würde die Aufgabenstellung nochmal im Kern durchdenken.
Wie immer ist die Trennung zwischen Datentransport und Datenaufbereitung sehr wichtig.
Wieviele Arten des Datentransports sind denn denkbar?
* FTP / Secure FTP (verschiedene Clients vorsehen)
* Zugriff auf Datei, lokal oder im Netzwerk
* HTTP(s); also Download einer Resource von einem Webserver mit der GET Methode
* externes Exe-Programm, das die Daten holt
* externes VB- oder Java-Script das die Daten holt

Datenaufbereitung bedeutet dass die Daten in einen Konverter gehen und am Ende kommt das gemeinsame XML-Format raus.
Nur diesen Konverter würde ich als Plugin sehen.
Der verschiedenen Arten des Datentransports sollten dagegen fest im Hauptprogramm liegen (natürlich parametrisiert).

Das Plugin könnte man als ActiveX-DLL implementieren.
Delphi-Quellcode:
IConverterPlugin = Interface
  procedure SetParameter(name:WideString; value:OleVariant);
  procedure Convert(instream, outstream : IStream);safecall;
  function GetVersion:Widestring;safecall;
end;
fork me on Github
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Add-On erstellen, das auf die Funktion im Hauptprogramm zugreift?

  Alt 26. Mai 2013, 20:53
Der verschiedenen Arten des Datentransports sollten dagegen fest im Hauptprogramm liegen
Das würde für mich sehr viel undankbarer Arbeit bedeuten, von der am Ende bestenfalls vielleicht 1 Benutzer von 100 Gebrauch macht. Die wichtigsten Datenquellen sind eben fest im Programm verbaut. Der Client an sich ist recht primitiv. Die Daten kosten Unmengen an Geld und sind dazu noch ziemlich kompliziert aufgebaut. Der Client macht diese Daten lesbar, und das wahr's auch schon. Ab und zu bekomme ich die Anfragen, ob es möglich wäre eine oder andere Quelle noch dazu einzubauen. Keiner ist aber bereit, den Aufwand entsprechend zu honorieren. Deswegen möchte ich ein paar Schnittstellen bereitstellen, die dem Benutzer erlauben würden, die Daten selbst woher auch immer zu beziehen und diese dann im Client genau so übersichtlich darzustellen.
  Mit Zitat antworten Zitat
Antwort Antwort

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