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
Datenaustausch zwischen zwei Programmen
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.
Dort gibt es TSimpleIPCClient und TSimpleIPCServer.
Die sind für so etwas gedacht.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
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
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
-
- Beiträge: 98
- Registriert: Di 4. Aug 2015, 15:29
- OS, Lazarus, FPC: Linux, Raspbian, Windows
- CPU-Target: 64/32 Bit
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
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
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;
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
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
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