Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kommunikation zwischen zwei Delphiprogrammen (https://www.delphipraxis.net/211958-kommunikation-zwischen-zwei-delphiprogrammen.html)

rwb 26. Nov 2022 06:52

Kommunikation zwischen zwei Delphiprogrammen
 
Liebe Freunde,

heute bitte ich Euch um allgemeine Hinweise, Tips und Ratschläge um folgende, für mich ganz neue, Aufgabenstellung zu lösen.
Ich möchte ein Delphiprogramm (mit Delphi Professional 10.4.2) schreiben, dass eine GUI hat, aber dennoch etwas für mich erledigt, wenn ich es unter W8.1 verkleinere, es also in der Taskleiste landet.
Ein zweites Programm soll einige Parameter an das Erste schicken können. Dort wird etwas berechnet und dann das Ergebniss an das zweite Programm zurückgeschickt. (compute server?)
Mit welchen Standartkomponenten kann ich das erreichen? Wenn es irgendwie ginge, würde ich gerne Mechanismen des Betriebssystems umgehen und die Programme sozusagen direkt miteinander kommunizieren lassen.

An folgende Lösungen habe ich schon gedacht.

A) Das zweite Programm ruft das Erste direkt auf (startet es) und übergibt dabei die Parameter. Dann wird das Ergebniss über die Zwischenablage zurückgegeben. Das ist leider langsam und braucht die Zwischenablage.
B) Ich lasse ein drittes Programm mit einer Datenbank laufen, auf das die ersten beiden Programme auch Zugriff haben. Wenn ich die Datenbank im RAM laufen lasse ist das sogar recht schnell aber es ist mit mehr Aufwand verbunden.

Welche elegantere Lösungen gibt es?

Herzlichen Dank im voraus.

RWB

KodeZwerg 26. Nov 2022 07:12

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Im allgemeinen verwendet man IPC (Inter Process Communication) dafür.
Da Du schreibst "ohne Mechanismen des Betriebssystems" auskommen zu wollen wird dir wohl nichts was IPC betrifft zusagen.

rwb 26. Nov 2022 07:57

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Hallo KodeZwerg,
ersteinmal danke für die Antwort. Auch wenn ich Vorlieben habe, hier also das Betriebssystem zu umgehen, kann es ja sein, dass das der einzige Weg ist. Ich bin daher offen für alle Vorschläge.
Gibt es Komponenten für IPC? Wie geht man das praktisch an?

TurboMagic 26. Nov 2022 08:39

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Dazu kurz zwei Stichworte:
Named Pipe
Sockets, entweder TCP oder UDP

Für letzteres entweder Indy nehmen, ist aber synchron oder
ICS (siehe Tools/GetIt), das wäre nicht blockierend asynchron.

Grüße
TurboMagic

Bernhard Geyer 26. Nov 2022 10:23

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Zitat:

hier also das Betriebssystem zu umgehen
Ein "umgehen" des Betriebssystem ist hier nicht möglich.
Du kannst hier nur versuchen einen Weg zu finden, welcher z.B. nicht nur unter Windows verfügbar ist, sondern auch auf Linux gehen würde.

dummzeuch 26. Nov 2022 11:41

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Die einfachste und in der Regel idiotensichere Möglichkeit, Daten von einem Programm an ein anderes zu übergeben, ist via Dateien.

Beispiel: Es gibt ein Verzeichnis A mit Eingabedateien und Verzeichnis B mit Ausgabedateien.
Programm 1 schreibt seine Daten, die berechnet werden sollen, in Verzeichnis A, Programm 2 wartet darauf, dass in Verzeichnis A Dateien angelegt werden, liest sie, verarbeitet sie und schreibt das Ergebnis in Verzeichnis B. Programm 1 wartet darauf, dass seine Ergebnisse in Verzeichnis B erscheinen und liest sie dann aus.

Das ist sicherlich nicht die schnellste, eleganteste und sicherste Lösung, aber es lässt sich wunderbar debuggen und testen. Ach ja, und es funktioniert auch auf einem Share im Netzwerk.

Man darf sich nur nicht von irgendwem erwischen lassen, dass man so eine simple Lösung verwendet statt irgendeines "Frameworks" oder einer Datenbank (wobei die schon Old School sind) oder eines "Microservices".

Mavarik 26. Nov 2022 12:20

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Die einfachste Lösung wäre doch per http...

Die eine App mach einen http oder REST Server auf... Die andere kann dann einfach per JSON die Anfrage senden und so auch die Antwort erhalten.

Mavarik

PS.: Also im Prinzip das, was TurboMagic schon geschrieben hat, nur einen Layer mehr.

TurboMagic 26. Nov 2022 12:32

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Auch das sollte mit ICS gehen oder vermutlich auch mit Indy, wenn es blockieren darf.

Rolf Frei 26. Nov 2022 12:54

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich nutze hierfür Namend Pipes. Dafür gibt es eine Freeware Komponente, die das Ganze sehr einfach machen. Diese Freeware Komponente habe ich dir mal angehängt. Ich nutze dies schon sehr lange zum Steuern eines Windwosdienstes über ein Trayicon Programm.

rwb 26. Nov 2022 13:18

AW: Kommunikation zwischen zwei Delphiprogrammen
 
Ich bin begeistert, herzlichen Dank an alle.
Jetzt werde ich ersteinmal alle Vorschläge überdenken und habe dann bestimmt weitere Fragen.
Ich wünsche allen ein tolles bzw besinnliches Wochenende.

RWB


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz