Comment puis-je envoyer une chaîne de caractères à partir d'une instance de ma Delphi programme à l'autre?
Quelle est la meilleure et la plus simple pour envoyer une chaîne de caractères à partir d'une instance de mon programme à un autre exemple de mon programme? Le programme de réception doit exécuter une procédure, à l'aide de la chaîne reçue en paramètre.
J'ai commencé à lire sur DDE, mais je suis confus. Quelles sont les autres options dois-je, et quel est le moyen le plus facile pour mettre en œuvre cette?
- J'ai édité votre question pour être plus facile à classer et à la recherche pour plus tard. Il n'est DONC pas seulement pour vous d'obtenir une solution rapide à vos problèmes, mais aussi de créer une base de corps de connaissances, comme un wiki.
- Quelque chose de mal avec l'aide du registre pour la transmission de l'information entre les instances? Ou serait-ce l'impact de la performance de trop?
InformationsquelleAutor Arthur | 2009-02-04
Vous devez vous connecter pour publier un commentaire.
Utiliser des canaux nommés, mais je vous recommande Russell Libby du canal nommé composants. Il y a un TPipeClient et TPipeServer composant.
Que de (2013-10-04) Françoise Piette et [email protected] mise à jour de ce code source pour compiler avec Delphi 7 pour XE5 (versions antérieures peuvent compiler cependant non testé) et de le mettre ici:
http://www.overbyte.be/frame_index.html?redirTo=/blog_source_code.html
Ces 2 composants, à l'aide de canaux nommés incroyablement facile, et les tubes nommés sont grands pour la communication inter-processus (IPC).
Son site est ici. Recherchez "Pipes.zip". La description de la source: //Description : Jeu de client et de serveur de canal nommé composants pour Delphi, //et une console de tuyau de redirection de composant.
Aussi, Russell m'a aidé sur des Experts-Échange avec l'utilisation d'une ancienne version de ce composant pour travailler dans une application console pour envoyer/recevoir des messages sur des canaux nommés. Cela peut aider comme un guide en vous et en cours d'exécution avec l'aide de ses composants. Veuillez noter que, dans un VCL app ou un service, vous n'avez pas besoin d'écrire votre propre message en boucle comme je l'ai fait dans cette application console.
Je utiliser des canaux nommés pour cela, il était le plus facile que j'ai trouvé. Je vais poster le code quand je rentre du travail.
Voici un article sur la façon de l'utiliser en delphi:
http://www.delphi3000.com/articles/article_2918.asp?SK=
Il y a un million de solutions à ce par le moyen, tous semblent être ennuyeux. Pipes est la meilleure que j'ai trouvé à ce jour.
Voici le code, désolé pour le retard. Vous devriez vérifier le Tuyau de la bibliothèque mentionné par Mick trop. La chose que j'ai fait ici est une jolie expérience rapide. Veuillez noter qu'elle a été faite dans Delphi 2009.
Voici comment j'ai envoyer quelque chose:
Voici comment j'ai lu quelque chose:
Pour de très courts messages, WM_COPYDATA est probablement le plus facile. Autre que cela, il n'y a PetriW la suggestion de canaux nommés, ou de sockets.
Voir JclAppInstances dans le JCL.
Obtenir un look à ZeroMQ. Si vous avez les pensées derrière l'architecture, il peut changer radicalement la façon dont vous pensez. Aussi loin que j'ai eu une procédure pas à pas, ils ont des bibliothèques de nombreux langages de programmation, y compris Delphi. Mais je n'avais pas une chance de l'essayer.
ZeroMQ
Voici Delphi port de la bibliothèque.
Vérifier Cromis.CIB, à l'interne, il utilise des canaux nommés, mais il offre beaucoup plus facile de l'API, et il est compatible avec les dernières versions de Delphi.
Je suggère TMappedFile - plus efficace que les canaux nommés.
- Je utiliser InterAppComm et il est très bon.
Il envoie des données entre deux ou plusieurs applications. Il peut envoyer des chaînes de caractères, des entiers et des autres types de données.