AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Daten oder Anweisungen aus DLL an das Hauptprogramm senden

Daten oder Anweisungen aus DLL an das Hauptprogramm senden

Ein Thema von Ookami · begonnen am 11. Jun 2010 · letzter Beitrag vom 11. Jun 2010
Antwort Antwort
Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#1

Daten oder Anweisungen aus DLL an das Hauptprogramm senden

  Alt 11. Jun 2010, 00:09
Hallo zusammen,

ich habe da mal noch ne Frage zum Thema DLL's. Speziell geht es mir darum, von einer DLL heraus Nachrichten an das Hauptprogramm zu senden.
Könnte ungefähr so aussehen.
Ich habe ein Programm, das mit mehreren DLL's zusammenarbeitet. Einige dieser DLL's enthalten eine TForm mit allem drum und dran.
Brauche ich jetzt Daten aus einer anderen DLL, müssen die Daten ja quasi doppelt geladen werden.
Um das zu vermeiden, möchte ich die Daten über das Hauptprogramm schicken an die 2. DLL schicken. Diese , schickt sie dann an das Hauptprogramm zurück und dieses leitet sie weiter an die 1. DLL. Was dann im Prinzip wie ein Server funktioniert.
Ich möchte aber nicht pollen auf der einen Seite oder so etwas Netzwerk also mit Indy's und so aufbauen. Jemand hier hat sich da mal mit PlugIns beschäftigt. Das ist aber jetzt auch nicht das was ich vorhabe.

Wäre schön, wenn mir das jemand Laienhaft evtl. mit kleinem Code-Beispiel klarmacht. So firm bin ich mit den DLL's noch nicht.
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Daten oder Anweisungen aus DLL an das Hauptprogramm senden

  Alt 11. Jun 2010, 00:42
Um was für Infos handelt es sich? Sind die Infos statisch oder ändern sie sich je nach Programmverlauf? Bei statischen Infos kannst du die DLL getrost aus der 2. DLL heraus nochmal neu laden und den jeweiligen Import aufrufen, der dir die Infos übergibt.
Wenn es sich um dynamische Daten handelt, dann könntest du einfach die üblichen IPC Methoden wie z.b. Memory Mapped Files oder Pipes verwenden. Du erstellst mit CreateEvent() ein named event und wartest in einem Thread der 2. DLL mit WaitForSingleObject. Wenn jetzt Daten anliegen, benutzt du SetEvent() aus der ersten DLL heraus. Der Thread in DLL 2 wird jetzt fortgesetzt resettet das Event mit ResetEvent() und kann nun die Daten auslesen.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Daten oder Anweisungen aus DLL an das Hauptprogramm senden

  Alt 11. Jun 2010, 07:52
Hallo,

für den einfachen Datenaustausch zwischen programmen habe ich einmal zwei Klassen programmiert:


http://www.delphipraxis.net/151224-klassen-fuer-einfache-ipc-interprozesscommunication.html


Vielleicht hilft Dir das Weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#4

AW: Daten oder Anweisungen aus DLL an das Hauptprogramm senden

  Alt 11. Jun 2010, 13:58
Hallo Jungs,

zuerst mal Danke für die Tipps. Das mit den Events ist mir auch schon in den Sinn gekommen. So richtig glücklich bin ich aber noch nicht damit.
Mit den MMF oder auch Pipes habe ich noch nichts angestellt, auch in der Hinsicht also Null Erfahrung.

Ok, ich hätte mich an der Stelle präzieser ausdrücken sollen.

Ich habe ein Programm, das mit mehreren DLL's zusammenarbeitet die DYNAMISCH geladen werden. Einige dieser DLL's enthalten eine TForm mit allem drum und dran.
Brauche ich jetzt Daten aus einer anderen DLL, müssen die Daten ja quasi doppelt geladen werden.
Um das zu vermeiden, möchte ich die Daten über das Hauptprogramm schicken an die 2. DLL schicken. Diese , schickt sie dann an das Hauptprogramm zurück und dieses leitet sie weiter an die 1. DLL. Was dann im Prinzip wie ein Server funktioniert.

Idefix2: Aus deiner Antwort bin ich noch nicht ganz schlau geworden. Ich muss mir das später noch mal in Ruhe durchlesen.

Trotzdem mal Danke an euch beide
Wolfgang
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Daten oder Anweisungen aus DLL an das Hauptprogramm senden

  Alt 11. Jun 2010, 14:27
Wenn Du eine Kommunikation zwischen zwei Programmen haben willst, (Programm 1 schickt Daten an Programm 2, Programm 2 empfängt diese Daten und macht dann irgend etwas damit), dann sind die Klassen aus meinem vorigen Post genau das, was Du brauchst.

Wenn Du von allen Programmen aus einen direkten Zugriff auf die gleichen gemeinsamen Daten haben willst, verwendest Du am Besten ein MMF. Wenn Du das brauchst, kannst Du Dir auch in den Quelltexten den beiden Klassen anschauen, wie Du ein MMF verwendest, die verwenden intern ein MMF für die Kommunikation.
  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 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf