Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
980 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Appel d'une meme dll par 2 softs differents, pour echange une donnée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel d'une meme dll par 2 softs differents, pour echange une donnée

n°408318
van_axl
Posté le 26-05-2003 à 18:05:09  profilanswer
 

Bon voila, j'ai 2 softs qui ne sont pas parogrammé dans le meme langage (delphi et labview en l'occurence). Je veut créer une dll qui puisse faire passer des données de l'un a l'autre. Elle serait donc appeler par les 2 softs.
Mais comment faire car si un soft charge la dll, l'autre ne pourra charger qu'un doublon de la dll.
Donc si j'envoie une donnée dans une fonction par 1 soft, l'autre ne pourra pas lire cette donnée car lui bosse avec la dll "doublon" !!
Donc je suis embeté, y a p-etre un autre moyen pour echanger des données , mais je vais pas trop.
Si vous avez une idée, elle sera la bienvenue.
THx

mood
Publicité
Posté le 26-05-2003 à 18:05:09  profilanswer
 

n°408330
Ciler
Posté le 26-05-2003 à 18:31:42  profilanswer
 

Van_axl a écrit :

Bon voila, j'ai 2 softs qui ne sont pas parogrammé dans le meme langage (delphi et labview en l'occurence). Je veut créer une dll qui puisse faire passer des données de l'un a l'autre. Elle serait donc appeler par les 2 softs.
Mais comment faire car si un soft charge la dll, l'autre ne pourra charger qu'un doublon de la dll.
Donc si j'envoie une donnée dans une fonction par 1 soft, l'autre ne pourra pas lire cette donnée car lui bosse avec la dll "doublon" !!
Donc je suis embeté, y a p-etre un autre moyen pour echanger des données , mais je vais pas trop.
Si vous avez une idée, elle sera la bienvenue.
THx


 
l'ecrire dans un fichier texte ?
La faire passer entre les deux appli par un message windows ?


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
n°408345
van_axl
Posté le 26-05-2003 à 19:09:57  profilanswer
 

ouai mais il faudrait qu'elle permette de"synchroniser" les 2 softs. en gros : 1 envoie une donnée à 2, et deux en lisant dit OK j'ai lu tu peux continuer. C'est ca l'idée en fait .
pour le message windows, est-ce possible apres que les données soient utilisées ? Car en fait ce sont des valeurs qu'il faudrait transmettre du soft 1 au soft 2.
L'idée du fichier texte n'est pas forcément interessante car il faudrait que l'un ouvre le fichier, puis ecrive, puis le ferme. Pendant que le second essayer aussi de l'ouvrir, puis de le lire, puis de le fermer!!

n°408373
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-05-2003 à 20:08:52  profilanswer
 

Tu peux t'arranger pour communiquer via DDE : si le serveur DDE (la DLL) n'existe pas, tu le lance, sinon bah tu te connectes dessus.
Je peux pas te donner bcp plus d'infos malheureusement, mais je pense que ça pourrait t'aider dans ton cas... (si tu as accès au DEE depuis labview évidemment, sinon il faudra encore une DLL intermédiaire :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°408898
van_axl
Posté le 27-05-2003 à 10:25:33  profilanswer
 

Bon pour le DDE, je ne connais pas du tout donc je sais pas si ca peux faire ce que je veux (mais ca a l'air qd meme lourd a programmer).
Par contre on m'a parler de l'utilisation de socket.
Vous en penser quoi ?  
Si vous avez d'autre soluce je suis toujours prenneur.

n°408922
van_axl
Posté le 27-05-2003 à 10:41:43  profilanswer
 

On me parle aussi de FIFO, mais c'est presque du chinois pour moi.

n°408981
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 11:20:17  profilanswer
 

Je suis pas sûr que jouer avec des sockets soit plus facile que le DDE... Enfin que ce soit l'un ou l'autre y a des encapsulations dans Delphi pour que ce soit plus facile à utiliser je pense.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409012
gatorette
Posté le 27-05-2003 à 11:37:45  profilanswer
 

le mieux est encore que tu ailles voir dans la MSDN ce que Windows propose comme systèmes de communication entre les processus : http://msdn.microsoft.com/library/ [...] ations.asp


---------------
each day I don't die is cheating
n°409033
van_axl
Posté le 27-05-2003 à 11:55:11  profilanswer
 

ok thx je vais jeter un coup d'oeil.

n°409037
KrzAramis
Help Me
Posté le 27-05-2003 à 11:59:26  profilanswer
 

J ai deja reussi a faire marcer une DLL appele par trois programme a la fois et sans probleme (Appel Dynamique  :pt1cable: ) . Donc en e qui concerne l appel a la DLL je ne pense pas qu il y est de probleme. Maintenant comme synchro les 2 process... Aucune idee  [:ddr555] .
 
@->--


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
mood
Publicité
Posté le 27-05-2003 à 11:59:26  profilanswer
 

n°409046
van_axl
Posté le 27-05-2003 à 12:06:48  profilanswer
 

Mais , dans tes 3 applis , tu pouvais faire passer des infos via cette dll ! car sinon moi de mon coté la dll est bien chargé par mes 2 softs.


Message édité par van_axl le 27-05-2003 à 12:07:05
n°409170
van_axl
Posté le 27-05-2003 à 14:20:45  profilanswer
 

Bon, j'en etais rester sur ses soluces :
- message windows mais labview ne gere pas torp ca.
- socket mais ce que j'arrive a faire pour l'instant c'est qu'une connexion socket client serveur dans labview (ca marche). En delphi j'ai aussi fait 2 applis clients serveur aui marchent aussi , ils se parle. Mais pour fair parler delphi et labview ......
:cry:

n°409173
seblamb
Posté le 27-05-2003 à 14:22:32  profilanswer
 

Attention on est plus sous DOS
Sous Win32 les processus ne peuvent pas partager entre eux de la mémoire ( mode protégé).
 
Une dll fait partie du processus qu'il l'appelle, donc la mémoire utilisée par cette dll appartient au processus appellant  
 
Par example si une dll a une variable statique "int TOTO" et bien il aura autant de variable TOTO que de processus qui appelle la dll
 
Pour partager la memoire entre processus il faut utiliser des fonctions comme le File Mapping ( le plus simple ), DDE, OLE, COM ...
 
 
 

n°409610
van_axl
Posté le 27-05-2003 à 17:15:27  profilanswer
 

Bon j'y suis pas mal arrivé en utilisant le DDE.
Mais j'ai une derniere petite question. ESt ce possible d'implémenter le client DDE dans une dll faite avec delphi.
Comme ca je pourrais faire un soft sous labview qui sera serveur DDE, puis la dll avec dedans une fonctions qui renverrais en fait la lecture DDE.
Comme ca je Fixe dans le soft labview puis dans la dll, le nom des parametre DDE (Service, Topic ....) ?
Je sais je suis gourmand en information mais promis c'est la derniere question.

n°409631
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 17:40:28  profilanswer
 

bah à priori tu mets ce que tu veux dans ta DLL Delphi :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409694
van_axl
Posté le 27-05-2003 à 19:30:54  profilanswer
 

Mouai sauf que comme je veux modifier des propriete d'un composant, je dois mettre le composant DDE sur une form, donc je dois ajouter une Unit, et la quand je parametre mon DDECLientConv1 (service ,...) , la dll se compile bien mais des que je l'appelle ca me plante mechament mon prog !!

n°409702
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 19:43:53  profilanswer
 

Tu crées bien ta form dans ta DLL ?
Sinon ce que tu peux faire c'est créer le composant via code, sans passer par une form, en passant nil comme owner.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409743
van_axl
Posté le 27-05-2003 à 21:12:35  profilanswer
 

j'ai bien saisi ce que tu me dis de faire , mais je vois pas comment le faire. qd j'ajoute le DDEcomposant dans sur ma form, ca ma rajoute auto dans l'unit : Ddeman (dans les uses), et le type DdeClientConv1: TDdeClientConv .
Mais donc comment je peux ajouter ca dans mon DPR de la dll jsute en ligne de code ?
la je vois pas.

n°409750
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-05-2003 à 21:20:14  profilanswer
 

bah dans le DPR tu rajoutes le truc dans les uses, tu crées quelque part une variable de type TDDEmachin, puis au début de ta fonction appelée de l'extérieur tu crées ce bidule
variableDDE := TDDEmachin.Create(nil)
et tu le vires à la fin  
variableDDE.Free;
Si tu dois l'utiliser dans plusieurs fonctions non liées, tu peux le créer dans la section initialization, et le détruire dans finalization :
 

Code :
  1. implementation
  2. uses
  3.   DDEbidule;
  4. var
  5.   variableDDE: TDDEMachin
  6. (toutes tes fonctions ici)
  7. initialization
  8.   variableDDE := TDDEMachin;
  9.   variableDDE.param := truc;
  10.   etc.
  11. finalization
  12.   variableDDE.Free;
  13. end.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°409781
van_axl
Posté le 27-05-2003 à 21:55:48  profilanswer
 

Un énorme Merci pour le grand chef ANTP !!!
Ca marche :) :)  
Bon je vais p-etre arreter de bosser now,j'en ai eu assez pour la journée.
Je vais aller faire un tour sur ton site web.
 
Encore merci et @ plus.
 
Van_axl


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Appel d'une meme dll par 2 softs differents, pour echange une donnée

 

Sujets relatifs
[Mysql] Quel type pour ce champs de base de donnée ?[asp .NET] Runtime error si repertoire différents
XML et base de donnée[C++] Augmenter la taille de la pile d'appel (sous VC6)
base de donnée mysqlet forumulaire....[PHP](debutant) image et base de donnée
Comment faire 2 submit différents sur une mm <form> ?gérer les différents boutons de la souris
[VB] Automatisation initialisation de donnée ds un type style recordComment faire appel a une dll ?
Plus de sujets relatifs à : Appel d'une meme dll par 2 softs differents, pour echange une donnée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR