Datenaustausch zwischen zwei Programmen

Für Fragen von Einsteigern und Programmieranfängern...

Datenaustausch zwischen zwei Programmen

Beitragvon DL3AD » 6. Feb 2018, 16:29 Datenaustausch zwischen zwei Programmen

Hallo,

ich möchte einen einfachen Datenaustausch zwischen zwei Programmen ohne Verzögerung realisieren - es sind lediglich zwei Strings.
Programm A schreibt ein eine INI-Datei und Programm B kann die INI lesen und auch umgekehrt.
Kann man das so machen oder gibt es elegantere (infachere) Lösungen ?

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon theo » 6. Feb 2018, 17:12 Re: Datenaustausch zwischen zwei Programmen

Schau mal auf den "System" Tab bei Komponenten.
Dort gibt es TSimpleIPCClient und TSimpleIPCServer.
Die sind für so etwas gedacht.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon DL3AD » 6. Feb 2018, 18:14 Re: Datenaustausch zwischen zwei Programmen

Hallo theo,

Danke für den Tipp - leider ist wenig Information dazu verfügbar - gibt es irgentwo ein Beispiel ?
Wenn ich einen bidirektionalen Info Austauch brauche - muss dann auf jeder Seite ein Server und Client sein ?

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon AndreasMR » 6. Feb 2018, 21:37 Re: Datenaustausch zwischen zwei Programmen

Hallo DL3AD,

eine andere Möglichkeit besteht über Sockets. Ein gutes Beispiel inkl. Tutorial findest Du in der Komponente lNet.

Eine weitere Möglichkeit besteht in der Verwendung von "named pipes" (unter Linux).


Beste Grüße

Andreas
Ubuntu 14.04 LTS / Raspbian / Windows: Lazarus ab 0.9 bis 3.0
AndreasMR
 
Beiträge: 86
Registriert: 4. Aug 2015, 14:29
OS, Lazarus, FPC: Linux, Raspbian, Windows | 
CPU-Target: 64/32 Bit
Nach oben

Beitragvon Michl » 7. Feb 2018, 10:13 Re: Datenaustausch zwischen zwei Programmen

DL3AD hat geschrieben:Danke für den Tipp - leider ist wenig Information dazu verfügbar - gibt es irgentwo ein Beispiel ?

Beispiele findest du eine Menge in den Foren. Bei der Standard-Lazarus-Installation sind auch Beispiele unter fpc\3.0.4\source\packages\fcl-process\examples dabei.


Eigentlich geht das in einer GUI ganz einfach, wenn sie Nachrichten empfangen soll (GUI_1), einfach ein TSimpleIPCServer auf dem Formular ablegen, Global auf True, eine ServerID vergeben und Active auf True stellen.

Wenn die GUI Nachrichten senden soll (GUI_2), einfach ein TSimpleIPCClient auf dem Formular ablegen, ServerID angeben, welcher die Nachricht empfangens soll, und Active auf True.

Jetzt kann man (GUI_2) per SimpleIPCClient1.SendStringMessage('Hallo Welt'); eine Nachricht senden und in Event SimpleIPCServer1.OnMessage (GUI_1) empfangen (und z.B. ausgeben).

DL3AD hat geschrieben:Wenn ich einen bidirektionalen Info Austauch brauche - muss dann auf jeder Seite ein Server und Client sein ?

Ja
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2260
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon DL3AD » 8. Feb 2018, 10:52 Re: Datenaustausch zwischen zwei Programmen

Hallo,

Danke für eure Antworten.
Ich werde dann auf Sockets setzen - dass habe ich schon gemacht, Client seitig mit Synapse.
Nun muss ich mal schauen wir ich einen Server (nur für eine Verbindung) realisieren kann.
Ein simples UDP sollte ja reichen auf dem localen Rechner.

Gruß Frank
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried