Je cherche =E0 m'interfacer avec Ivy.dll que vous trouverez =E0
http://www2.tls.cena.fr/products/ivy/download/binaries.html (en C#, C+
+,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent
tr=E8s bien. J'ai essay=E9 de les int=E9grer dans du code Windev (et =E0 te=
rme
je voudrais faire de m=EAme en Windev Mobile), mais =E7a ne marche pas.
Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel
et bien puisque d=E9j=E0 test=E9 dans d'autres langages. Avez-vous une
id=E9e ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais
ne trouve pas la fonction (j'ai essay=E9 start, Start, START... m=EAme
r=E9sultat).
HndlLib est un entier
// Chargement de la librairie
sNomDLL est une cha=EEne
sNomDLL =3D "C:\Mes Projets\Test Ivy\Ivy.dll"
// pour info, j'ai essay=E9 aussi dans Windows, WIndows\System32... idem
HndlLib=3DChargeDLL(sNomDLL)
SI HndlLib=3D0 ALORS
Info("La Librairie n'est pas charg=E9e")
SINON
Info("La Librairie est charg=E9e")
AppelDLL32(sNomDLL,"start", "127.0.0.1:2010"))
Trace("ok")
// D=E9charge la librairie
D=E9chargeDLL(HndlLib)
FIN
En creusant encore une nouvelle fois, j'ai appris qu'une des DLL est utilisable en environnement .NET; je l'ai importée dans Windev comme composant .Net dans Windev. Du coup, je peux écrire : pclBus est Ivy dynamique pclBus = allouer Ivy
Ensuite, quand je tape pclBus: j'obtiens une liste de fonctions/ propriétés (je suppose) associées à cet objet, donc l'objet est bie n reconnu, c'est cool. Donc j'écris par exemple : pclBus:Start("127.0.0.1:2010") pclBus:Stop() et ça semble marcher. Pour info, ce bus Ivy permet la communication entre des machines PC, Mac, Linux, en C, C++, C#, Java, Python,... ça peut peut-être vous aider dans vos applications...
Maintenant le souci est à un autre endroit : pour créer un binding, l'objet bus me propose soit BindMsg, soit BindSimpleMsg. Le premier demande un seul paramètre de type IvyApplicationBinding, alors que le second demande 3 paramètres (une chaine, un callback de type IvyMessageEventArgs et un tableau d'objects). J'ai essayé de créer des objets de ces types et de les remplir avant de les passer en paramètres, mais rien ne marche. Donc je rate certainement une étape.
Pour le BindMsg, par exemple, j'ai tenté : pclTestBinding est IvyApplicationBinding dynamique pclTestBinding = allouer IvyApplicationBinding pclTestBinding:Expression = "(.*)" //ça c'est bon, car si je fais afficher pclTestBinding:Expression , j'obtiens bien (.*) .
ensuite j'essaie de faire de même pour définir le callback en faisant : pclTestBinding:Callback = maFonction // maFonction étant le nom d'une fonction que j'ai écrite en Windev, mais ça ne fonctionne pas. De même avec &maFonction, maFonction(), &maFonction(). Est-ce que ce n'est pas comme ça qu'on définit le callback dans ce cas ?
Je sais (enfin, je crois) que je devrai ensuite écrire : pclBus:BindMsg(pclTestBinding) pour faire le binding.
Pour la seconde syntaxe, BindSimpleMsg demande le callback de type IvyMessageEventArgs, donc j'ai essayé : pclCallback est un IvyMessageEventArgs dynamique pclCallback = allouer IvyMessageEventArgs pclCallback = maFonction
mais là, Windev me dit "Erreur :Mauvais paramètre pour le constructeur de la classe IvyMessageEventArgs", et je n'ai pas plus d'info :- ( (rien dans les docs) J'ai essayé aussi de choisir des propriétés de IvyMessageEventArgs , par exemple pclCallback:Argument = maFonction ou autre, mais rien ne passe (lecture seule pour cet argument, etc).
De même, ensuite, je pense que je devrai écrire : pclBus:BindSimpleMsg("(.*)",pclCallback, Null) // j'ai mis Null parce que je ne sais pas à quoi correspond ce tableau d'objets demandés :-(
Si vous avez des idées sur tout ça, je prends. De plus, comment avec Windev puis-je consulter "l'intérieur" du composant .Net par exemple pour savoir quels paramètres manquent sur le constructeur, quelles sont les propriétés en lecture seule, etc. ?
JC
Bonjour
En creusant encore une nouvelle fois, j'ai appris qu'une des DLL est
utilisable en environnement .NET; je l'ai importée dans Windev comme
composant .Net dans Windev. Du coup, je peux écrire :
pclBus est Ivy dynamique
pclBus = allouer Ivy
Ensuite, quand je tape pclBus: j'obtiens une liste de fonctions/
propriétés (je suppose) associées à cet objet, donc l'objet est bie n
reconnu, c'est cool. Donc j'écris par exemple :
pclBus:Start("127.0.0.1:2010")
pclBus:Stop()
et ça semble marcher. Pour info, ce bus Ivy permet la communication
entre des machines PC, Mac, Linux, en C, C++, C#, Java, Python,... ça
peut peut-être vous aider dans vos applications...
Maintenant le souci est à un autre endroit :
pour créer un binding, l'objet bus me propose soit BindMsg, soit
BindSimpleMsg.
Le premier demande un seul paramètre de type IvyApplicationBinding,
alors que le second demande 3 paramètres (une chaine, un callback de
type IvyMessageEventArgs et un tableau d'objects).
J'ai essayé de créer des objets de ces types et de les remplir avant
de les passer en paramètres, mais rien ne marche. Donc je rate
certainement une étape.
Pour le BindMsg, par exemple, j'ai tenté :
pclTestBinding est IvyApplicationBinding dynamique
pclTestBinding = allouer IvyApplicationBinding
pclTestBinding:Expression = "(.*)" //ça c'est bon, car si je fais
afficher pclTestBinding:Expression , j'obtiens bien (.*) .
ensuite j'essaie de faire de même pour définir le callback en
faisant :
pclTestBinding:Callback = maFonction // maFonction étant le nom
d'une fonction que j'ai écrite en Windev, mais ça ne fonctionne pas.
De même avec &maFonction, maFonction(), &maFonction().
Est-ce que ce n'est pas comme ça qu'on définit le callback dans ce
cas ?
Je sais (enfin, je crois) que je devrai ensuite écrire :
pclBus:BindMsg(pclTestBinding) pour faire le binding.
Pour la seconde syntaxe, BindSimpleMsg demande le callback de type
IvyMessageEventArgs, donc j'ai essayé :
pclCallback est un IvyMessageEventArgs dynamique
pclCallback = allouer IvyMessageEventArgs
pclCallback = maFonction
mais là, Windev me dit "Erreur :Mauvais paramètre pour le constructeur
de la classe IvyMessageEventArgs", et je n'ai pas plus d'info :-
( (rien dans les docs)
J'ai essayé aussi de choisir des propriétés de IvyMessageEventArgs ,
par exemple pclCallback:Argument = maFonction ou autre, mais rien ne
passe (lecture seule pour cet argument, etc).
De même, ensuite, je pense que je devrai écrire :
pclBus:BindSimpleMsg("(.*)",pclCallback, Null) // j'ai mis Null
parce que je ne sais pas à quoi correspond ce tableau d'objets
demandés :-(
Si vous avez des idées sur tout ça, je prends. De plus, comment avec
Windev puis-je consulter "l'intérieur" du composant .Net par exemple
pour savoir quels paramètres manquent sur le constructeur, quelles
sont les propriétés en lecture seule, etc. ?
En creusant encore une nouvelle fois, j'ai appris qu'une des DLL est utilisable en environnement .NET; je l'ai importée dans Windev comme composant .Net dans Windev. Du coup, je peux écrire : pclBus est Ivy dynamique pclBus = allouer Ivy
Ensuite, quand je tape pclBus: j'obtiens une liste de fonctions/ propriétés (je suppose) associées à cet objet, donc l'objet est bie n reconnu, c'est cool. Donc j'écris par exemple : pclBus:Start("127.0.0.1:2010") pclBus:Stop() et ça semble marcher. Pour info, ce bus Ivy permet la communication entre des machines PC, Mac, Linux, en C, C++, C#, Java, Python,... ça peut peut-être vous aider dans vos applications...
Maintenant le souci est à un autre endroit : pour créer un binding, l'objet bus me propose soit BindMsg, soit BindSimpleMsg. Le premier demande un seul paramètre de type IvyApplicationBinding, alors que le second demande 3 paramètres (une chaine, un callback de type IvyMessageEventArgs et un tableau d'objects). J'ai essayé de créer des objets de ces types et de les remplir avant de les passer en paramètres, mais rien ne marche. Donc je rate certainement une étape.
Pour le BindMsg, par exemple, j'ai tenté : pclTestBinding est IvyApplicationBinding dynamique pclTestBinding = allouer IvyApplicationBinding pclTestBinding:Expression = "(.*)" //ça c'est bon, car si je fais afficher pclTestBinding:Expression , j'obtiens bien (.*) .
ensuite j'essaie de faire de même pour définir le callback en faisant : pclTestBinding:Callback = maFonction // maFonction étant le nom d'une fonction que j'ai écrite en Windev, mais ça ne fonctionne pas. De même avec &maFonction, maFonction(), &maFonction(). Est-ce que ce n'est pas comme ça qu'on définit le callback dans ce cas ?
Je sais (enfin, je crois) que je devrai ensuite écrire : pclBus:BindMsg(pclTestBinding) pour faire le binding.
Pour la seconde syntaxe, BindSimpleMsg demande le callback de type IvyMessageEventArgs, donc j'ai essayé : pclCallback est un IvyMessageEventArgs dynamique pclCallback = allouer IvyMessageEventArgs pclCallback = maFonction
mais là, Windev me dit "Erreur :Mauvais paramètre pour le constructeur de la classe IvyMessageEventArgs", et je n'ai pas plus d'info :- ( (rien dans les docs) J'ai essayé aussi de choisir des propriétés de IvyMessageEventArgs , par exemple pclCallback:Argument = maFonction ou autre, mais rien ne passe (lecture seule pour cet argument, etc).
De même, ensuite, je pense que je devrai écrire : pclBus:BindSimpleMsg("(.*)",pclCallback, Null) // j'ai mis Null parce que je ne sais pas à quoi correspond ce tableau d'objets demandés :-(
Si vous avez des idées sur tout ça, je prends. De plus, comment avec Windev puis-je consulter "l'intérieur" du composant .Net par exemple pour savoir quels paramètres manquent sur le constructeur, quelles sont les propriétés en lecture seule, etc. ?
JC
Fredo
Pour la lecture de la DLL, utilisez Reflector !
"JC" a écrit dans le message de news:
Bonjour
Je cherche à m'interfacer avec Ivy.dll que vous trouverez à http://www2.tls.cena.fr/products/ivy/download/binaries.html (en C#, C+ +,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent très bien. J'ai essayé de les intégrer dans du code Windev (et à terme je voudrais faire de même en Windev Mobile), mais ça ne marche pas. Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel et bien puisque déjà testé dans d'autres langages. Avez-vous une idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais ne trouve pas la fonction (j'ai essayé start, Start, START... même résultat).
HndlLib est un entier
// Chargement de la librairie sNomDLL est une chaîne sNomDLL = "C:Mes ProjetsTest IvyIvy.dll" // pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL) SI HndlLib=0 ALORS Info("La Librairie n'est pas chargée") SINON Info("La Librairie est chargée") AppelDLL32(sNomDLL,"start", "127.0.0.1:2010")) Trace("ok")
// Décharge la librairie DéchargeDLL(HndlLib) FIN
Merci par avance
JC
Pour la lecture de la DLL, utilisez Reflector !
"JC" <jeanclaude.tarby@gmail.com> a écrit dans le message de news:
939d37c5-93e1-4df3-9bee-f2d8b2625a4d@37g2000yqm.googlegroups.com...
Bonjour
Je cherche à m'interfacer avec Ivy.dll que vous trouverez à
http://www2.tls.cena.fr/products/ivy/download/binaries.html (en C#, C+
+,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent
très bien. J'ai essayé de les intégrer dans du code Windev (et à terme
je voudrais faire de même en Windev Mobile), mais ça ne marche pas.
Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel
et bien puisque déjà testé dans d'autres langages. Avez-vous une
idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais
ne trouve pas la fonction (j'ai essayé start, Start, START... même
résultat).
HndlLib est un entier
// Chargement de la librairie
sNomDLL est une chaîne
sNomDLL = "C:Mes ProjetsTest IvyIvy.dll"
// pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
AppelDLL32(sNomDLL,"start", "127.0.0.1:2010"))
Trace("ok")
Je cherche à m'interfacer avec Ivy.dll que vous trouverez à http://www2.tls.cena.fr/products/ivy/download/binaries.html (en C#, C+ +,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent très bien. J'ai essayé de les intégrer dans du code Windev (et à terme je voudrais faire de même en Windev Mobile), mais ça ne marche pas. Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel et bien puisque déjà testé dans d'autres langages. Avez-vous une idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais ne trouve pas la fonction (j'ai essayé start, Start, START... même résultat).
HndlLib est un entier
// Chargement de la librairie sNomDLL est une chaîne sNomDLL = "C:Mes ProjetsTest IvyIvy.dll" // pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL) SI HndlLib=0 ALORS Info("La Librairie n'est pas chargée") SINON Info("La Librairie est chargée") AppelDLL32(sNomDLL,"start", "127.0.0.1:2010")) Trace("ok")