AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kommunikation zwischen zwei Delphiprogrammen
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation zwischen zwei Delphiprogrammen

Ein Thema von rwb · begonnen am 26. Nov 2022 · letzter Beitrag vom 17. Nov 2023
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 30. Nov 2022, 21:46
Danke, ich bastele jetzt mit den verschiedenen Ansätzen rum, und wenn was dabei rauskommt melde ich mich.
Danke noch mal an Alle für Ihre Beiträge.
RWB
Das Leben ist Freude
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#22

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 1. Dez 2022, 17:13
Es gibt dafür aber die WinAPI Funktionen FindFirstChangeNotification / FindNextChangeNotification, die ich z.B. in dzEditorLineendsFix verwende, um die Font-Datei, die Delphi 2007 erzeugt, jedesmal wieder in ein anderes Verzeichnis zu verschieben.

Der Code läuft in einem Hintergrundthread und sieht so aus:
...
Und nicht vergessen: Der Code sollte in einem Hintergrund-Thread laufen, sonst blockiert er das UI.
Diese API habe ich einer Netzwerkumgebung zum Überwachen eines EDI (Incoming) Verzeichnis auch einmal eingesetzt.
Solange die Anwendung kontinuierlich läuft, und das Netzwerkverzeichnis erreichbar ist, funktioniert es auch prima. Doch nach einer Netzwerkstörung, wegen der das Programm den Incoming-Ordner vorübergehend nicht sieht, oder einem Neustart des Programms, liegen eventuell Dateien im Incoming-Ordner, die zwischenzeitlich eingetroffen sind.
Daher muss man beim Start des Programms dann zusätzlich noch einmal einen normalen Directory-Scan durchführen. So gesehen hat man dann zwei Schleifen für ein und dieselbe Aufgabe.

Zur Kommunikation zwischen zwei Prozessen würde ich entweder das klassische Suchen im Dateisystem (Findxxx) verwenden, oder eine andere Methode für IPC. Client-Server basierte Lösungen jedoch nur mit einem zentralen Server. Nicht auf jedem Rechner im lokalen Netz möchte die IT "wilde" HTTP- oder sonstige offene Server-Ports sehen
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 12. Jan 2023, 00:31
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.
Funktioniert super - besten Dank!

Problem:
Es kann bei TPipeServer beim Beenden der Verbindung (Active := false) ein Speicherleck entstehen:
Soweit ich sehe passiert es, wenn ein TPipeClient Disconnect aufruft und TPipeServer "gleichzeitig" mittels Write diesem Client Daten D übermittelt und dann Active := false setzt.
In der Methode TPipeServer.Write wird via AllocPipeWrite für D Speicher reserviert. DisposePipeWrite wird aber für diesen Speicher dann nicht aufgerufen => Leck.
(EurekaLog 7.11.0.1)

Lösung:
Code der Komponente anpassen.

Workaround (Lösung wäre schöner ):
Bei 1-1 Verbindung: TPipeServer schliesst die Verbindung.
Bei 1-n Verbindungen: Flusskontrolle einbauen.
Michael Gasser

Geändert von Michael II (12. Jan 2023 um 00:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 12. Jan 2023, 07:48
Moin Michael II,
wie benutze ich denn jetzt das Ganze?
Mein Programm(e) ist in der IDE, ich lade die beiden Dateien, nehme sie in die USES auf und dann?
Ratlos,
RWB
Das Leben ist Freude
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 12. Jan 2023, 14:02
Hoi rwb,
falls du noch nie eine eigene Komponente erstellt hast, dann tu's mal - es macht Spass.
Zur Pipe: Wähle in deinem Delphi das Menu Komponente > Komponente installieren und füge RFNamedPipes.pas hinzu.
In RFNamedPipes.pas gibt's eine Procedure Register RegisterComponents('Win32', [TPipeServer, TPipeClient]);
Nach der Installation der Komponente findest du deshalb in der IDE in der Palette unter Win32 neu TPipeServer und TPipeClient.

Du hast zwei Apps 1 und 2, welche via Pipe kommunizieren sollen?
Knall auf 1 TPipeServer und auf 2 TPipeClient.
Setze die Eigenschaft PipeName in 1 und 2 auf den gleichen Wert.
Setze die Eigenschaft Active von TPipeServer auf true. TPipeServer wartet nun auf Verbindungsanfragen. TPipeClient kann mittels Connect verbinden.
Mit Write übermittelst du Daten. Auf der Gegenseite greifst du die empfangenen Daten im OnMessage ab.
Verbindung abbrechen:
Client seitig: Disconnet.
Server seitig: Active := false setzen (es gibt auch eine protected Methode, welche dich vielleicht interessiert, wenn du mehrere Clients hast und zu einem bestimmten Client die Verbindung kappen willst - schau in den Code)

Ich hoffe das hilft.
Michael Gasser

Geändert von Michael II (12. Jan 2023 um 14:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 12. Jan 2023, 17:42
Hervorragend Danke
Das Leben ist Freude
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 14. Jan 2023, 16:04
Was ist mit dem App-Tethering? Das sollte doch auch funktionieren. Habe bisher wenig Erfahrung damit, nur mal ein Übungsbeispiel (Bild mit Handy fotografieren und dann zum Desktop schicken) das geht einwandfrei.

Oder gibt es damit Probleme die ich nicht kenne?
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#28

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 14. Jan 2023, 16:09
Was ist mit dem App-Tethering?
Das hätte ich auch in den Ring geworfen, insbesondere da es ja quasi zu den Bordmitteln von Delphi gehört. Leider war ich zum Zeitpunkt der Fragestellung nicht voll einsatzfähig und mittlerweile hat sich das ja schon sehr weit in eine andere Richtung entwickelt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 14. Jan 2023, 19:25
Was ist mit dem App-Tethering?
Das hätte ich auch in den Ring geworfen, insbesondere da es ja quasi zu den Bordmitteln von Delphi gehört. Leider war ich zum Zeitpunkt der Fragestellung nicht voll einsatzfähig und mittlerweile hat sich das ja schon sehr weit in eine andere Richtung entwickelt.

Und ich würde wie TM (#4) tcp und dazu ICS Overbyte nutzen. Wenn ich die Tethering Infos richtig verstehe, dann kann das Ding für eine lokale Verbindung unter Windows auch "nur" IP - und da ich ICS voll vertraue und gleichzeitig sehe welchen Klotz sich Delphi mit Indy angelacht hat, bin ich vorsichtig mit einer Delphi eigenen Lösung. Aber das Ding ist natürlich sicher echt cool, wenn man gleich oder vielleicht später mal nicht nur lokal miteinander reden will.

Ich habe hier nur reingeschrieben wegen dem Leck in #9. Ich nutze die Pipe (#9) als Alternative zur einer tcp Verbindung. Da es NutzerInnen meiner App immer wieder gelingt mittels Firewall die Verbindung zu kappen ist ein zweiter Weg ganz gut.
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#30

AW: Kommunikation zwischen zwei Delphiprogrammen

  Alt 14. Jan 2023, 22:27
Die Wahl einer Lösung hängt natürlich auch immer vom persönlichen Geschmack ab. Das macht eine Lösung aber nicht zwingend zu einer besseren oder schlechteren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 06:12 Uhr.
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