Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   IPC Kommunikation mit Pipes (https://www.delphipraxis.net/213260-ipc-kommunikation-mit-pipes.html)

kuba 26. Jun 2023 22:10

IPC Kommunikation mit Pipes
 
Hallo,

ich habe einige Tests mit der IPC Komponente (Inter Process Communication) von Overbyte gemacht. Dabei ist mir aufgefallen, dass die Demo Programme nur im 32 Bit Modus funktionieren. Wenn ich die Beispiele als 64 Bit Anwendungen kompiliere dann hängen sich Server und Client kurz nach dem Connect auf. Kann mir jemand erklären warum das so ist und wie man die Programme als 64 Bit Version zum laufen bringen kann ?

Vielen Dank !

jaenicke 26. Jun 2023 23:09

AW: IPC Kommunikation mit Pipes
 
Zitat:

Zitat von kuba (Beitrag 1523774)
Dabei ist mir aufgefallen, dass die Demo Programme nur im 32 Bit Modus funktionieren. Wenn ich die Beispiele als 64 Bit Anwendungen kompiliere dann hängen sich Server und Client kurz nach dem Connect auf.

Das ist bei mir nicht so. Hier funktioniert es auch unter 64-Bit problemlos. Vielleicht grätscht da ein Antivirenprogramm rein?

Der schöne Günther 27. Jun 2023 08:00

AW: IPC Kommunikation mit Pipes
 
Ich kenne diese "Overbyte"-Geschichte jetzt nicht, aber in unserem Hauptprodukt redet eine 32-Bit-Delphi-Anwendung problemlos über Pipes mit einer 64-Bit-Nicht-Delphi-Anwendung und das geht seit Jahren völlig problemlos.

kuba 27. Jun 2023 09:17

AW: IPC Kommunikation mit Pipes
 
Ich habe das nochmal getestet. Wenn ich den Pipe Server 32 Bit kompiliere und den Client 64 Bit dann funktioniert es. Wenn ich den Server jedoch beende und mit dem Client versuche neu zu verbinden dann beendet sich der Client. Wenn beide mit 32 Bit kompiliert sind erhalte ich entsprechende Fehlermeldung wenn der Server nicht zur Verfügung steht.

kuba 27. Jun 2023 10:00

AW: IPC Kommunikation mit Pipes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Interessanterweise habe ich festgestellt, dass ich die Komponente nicht mit meiner älteren Delphi XE 7 Version verwenden kann. Bei der Installation erhalte ich die Fehlermeldung im Anhang.

kuba 27. Jun 2023 10:12

AW: IPC Kommunikation mit Pipes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mir fällt gerade noch ein, dass es bei der Installation ein Problem gab. Ich habe im Quellcode eine Deklaration angepasst. Eventuell ist das die Ursache für die Fehler ??
Obwohl ich die Änderung rückgängig gemacht habe funktioniert die Installation mit XE 7 nicht.

Der schöne Günther 27. Jun 2023 10:27

AW: IPC Kommunikation mit Pipes
 
Schau dir doch die Fehlermeldung einmal in Ruhe an.
Er sagt "Nein,
Delphi-Quellcode:
Realloc(..)
sieht bei
Delphi-Quellcode:
TMemoryStream
gar nicht so aus. Wenn du das überschreiben willst, musst du das auch genauso machen, dass es zu
Delphi-Quellcode:
TMemoryStream
passt".

Und recht hat er. Die Signatur von
Delphi-Quellcode:
Realloc(..)
ist bei
Delphi-Quellcode:
TMemoryStream
korrekterweise mit
Delphi-Quellcode:
NativeInt
, nicht
Delphi-Quellcode:
LongInt
. Letzteres ist unter Windows lustigerweise immer 32 Bit, auch wenn es eine 64-Bit-Anwendung ist.

BerndS 27. Jun 2023 10:39

AW: IPC Kommunikation mit Pipes
 
Ich habe das gerade mal runtergeladen und mit XE7 geöffnet.
Dazu habe ich die PipesProjects.groupproj geöffnet und dann Alle erzeugen ausgeführt.
Bei mir kommt kein Fehler.
Auch das Installieren von PipesDesignTime.dpk klappt problemlos.
Auch nach dem Neustart von XE7 keine Fehlermeldung.
Alle Komonenten lassen sich auch im Designer auswählen und hinzufügen.

Schon seltsam, dass es bei dir zu Fehlern kommt.
Hast du die Version Delphi XE7 Version 21.0.17707.5020 Update 1 installiert?

kuba 27. Jun 2023 11:13

AW: IPC Kommunikation mit Pipes
 
Zitat:

Zitat von BerndS (Beitrag 1523796)
Ich habe das gerade mal runtergeladen und mit XE7 geöffnet.
Dazu habe ich die PipesProjects.groupproj geöffnet und dann Alle erzeugen ausgeführt.
Bei mir kommt kein Fehler.
Auch das Installieren von PipesDesignTime.dpk klappt problemlos.
Auch nach dem Neustart von XE7 keine Fehlermeldung.
Alle Komonenten lassen sich auch im Designer auswählen und hinzufügen.

Schon seltsam, dass es bei dir zu Fehlern kommt.
Hast du die Version Delphi XE7 Version 21.0.17707.5020 Update 1 installiert?

Korrekt, genau die Version Delphi XE7 Version 21.0.17707.5020 Update 1. Beim kompilieren kommt kein Fehler, erst bei der Installation der PipesDesignTime Komponente erhalte ich EAccessViolation in Modul rtl210.bpl. Mit Delphi XE 2 übrigens der gleiche Fehler in Modul rtl60.bpl. Mit Alexandria 11.2 inkl. Patch kommt schon beim kompilieren ein Fehler: [dcc32 Fehler] Pipes.pas(435): E2037 Deklaration von 'Realloc' unterscheidet sich von vorheriger Deklaration

Wenn ich dann die Deklaration in Nativeint ändere kann ich kompilieren und auch die Komponente installieren. Einwandfreie Funktion habe ich jedoch nur mit den 32 Bit Versionen. Ich benutze Windows 11.

kuba 27. Jun 2023 11:34

AW: IPC Kommunikation mit Pipes
 
So, jetzt habe ich eine ältere VM mit Windows 10 und Delphi XE 7 hervorgeholt. Da funktioniert alles einwandfrei inkl. 64 Bit Versionen. Was kann man da jetzt noch machen ??

BerndS 27. Jun 2023 12:22

AW: IPC Kommunikation mit Pipes
 
Wenn du Delphi mit:
"C:\Program Files (x86)\Embarcadero\Studio\15.0\bin\bds.exe" -pDelphi -rTEST
startest, könntest du es mal mit den Default Einstellungen testen.
Das -rTest bewirkt, dass Delphi eine neuen Konfiguration in der Registry anlegt.

Bei dieser sind dann alle Einstellungen wie nach der Installation.

Hier kannst du die Komponenten erneut erstellen und installieren.
Wenn es hier auch nicht klappt, dann ist möglicherweise irgendwas an deinem System die Ursache.

kuba 27. Jun 2023 14:24

AW: IPC Kommunikation mit Pipes
 
Zitat:

Zitat von BerndS (Beitrag 1523808)
Wenn du Delphi mit:
"C:\Program Files (x86)\Embarcadero\Studio\15.0\bin\bds.exe" -pDelphi -rTEST
startest, könntest du es mal mit den Default Einstellungen testen.
Das -rTest bewirkt, dass Delphi eine neuen Konfiguration in der Registry anlegt.

Bei dieser sind dann alle Einstellungen wie nach der Installation.

Hier kannst du die Komponenten erneut erstellen und installieren.
Wenn es hier auch nicht klappt, dann ist möglicherweise irgendwas an deinem System die Ursache.


Ich habe das mit Delphi XE2 ausprobiert. Der Fehler bei der Installation der Komponente ist immer noch vorhanden. Es muss etwas mit Windows 11 zu tun haben, weil es auf der VM mit Windows 10 einwandfrei funktioniert. Das System auf dem ich den Fehler habe ist das Upgrade auf Windows 11 von der VM mit Windows 10.

Vielleicht kann noch jemand mit Windows 11 Installation testen ob der Fehler dort auch auftritt ...

omnibrain 27. Jun 2023 14:31

AW: IPC Kommunikation mit Pipes
 
Zitat:

Zitat von kuba (Beitrag 1523799)
Was kann man da jetzt noch machen ??

Die Entwickler von Overbyte ICS (Der ursptüngliche Entwickler François und der aktuelle Maintainer Angus) sind beide in der englischen Delphi-Praxis im dortigen Unterforum für ICS aktiv: https://en.delphipraxis.net/forum/37...mponent-suite/

kuba 27. Jun 2023 17:03

AW: IPC Kommunikation mit Pipes
 
Zitat:

Zitat von omnibrain (Beitrag 1523824)
Zitat:

Zitat von kuba (Beitrag 1523799)
Was kann man da jetzt noch machen ??

Die Entwickler von Overbyte ICS (Der ursptüngliche Entwickler François und der aktuelle Maintainer Angus) sind beide in der englischen Delphi-Praxis im dortigen Unterforum für ICS aktiv: https://en.delphipraxis.net/forum/37...mponent-suite/

Danke für den Tip, ich werde mal Kontakt aufnehmen. Ich habe noch einen zweiten Rechner mit Windows 11 und da treten exakt die gleichen Probleme auf wie in der VM mit Windows 11. Es handelt sich meiner Meinung nach definitiv um ein Problem mit der Windows Version. Schade eigentlich, bisher hat mit Windows 11 und Delphi alles wie gewohnt funktioniert. Die weitere Entwicklung meines Projekts werde ich wohl in einer Windows 10 VM fortführen.

kuba 22. Nov 2023 10:23

AW: IPC Kommunikation mit Pipes
 
Hallo,

falls es noch für jemand interessant ist, ich habe die Lösung des Problem in diesem Beitrag gefunden.

Dabei habe ich in der kompletten Unit Pipes.pas alle LongInt gegen LPARAM ausgetauscht.
Jetzt funktioniert es fehlerfrei und stabil unter Windows 11 mit Alexandria kompiliert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.

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