Comme indiqu=E9 dans la doc, je dois compiler mon code ci-dessous pour
le tester, mais mon PC plante chaque fois que je veux compiler ce code
(plantage sur la ligne DotNetD=E9l=E9gu=E9), sachant que le code de mon
application est juste celui-ci + le code de la proc=E9dure donn=E9e ci-
dessous. Il n=92y a rien ailleurs.
J=92ai int=E9gr=E9 la DLL Ivy.dll (trouv=E9e =E0 http://www2.tls.cena.fr/pr=
oducts/ivy/download/binaries.html
si vous voulez tester, dans Windows, Ivy DLL C#) comme
assemblage .NET. Je l=92ai m=EAme int=E9gr=E9e dans les fichiers =E0 int=E9=
grer
dans la compilation (mais que je le fasse ou non, =E7a n=92a rien chang=E9)=
.
Avez-vous une id=E9e ? La ligne qui fait planter est celle avec
DotNetD=E9l=E9gu=E9. Sans elle, la compilation se passe bien. De m=EAme, qu=
e
je mette le test =AB EnModeTest =BB ou non, =E7a plante =E0 la compilation.
pclBus est Ivy dynamique
pclBus =3D allouer Ivy
clTestBinding est un IvyApplicationBinding
clTestBinding =3D allouer IvyApplicationBinding
clTestBinding:Expression =3D "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique
pclMonHandler =3D DotNetD=E9l=E9gu=E9("testCallback","IvyMessageEventArgs"=
)
SI pclMonHandler <> Null ALORS
clTestBinding:add_callback(pclMonHandler)
Info("ajout d=E9l=E9gu=E9 OK")
SINON
Info("ajout d=E9l=E9gu=E9 pas ok")
FIN
FIN
Pour faire suite à mon post ci-dessus (et ça vous donnera peut-être des idées pour des réponses), voici comment on écrit la même chose en C# . Si on veut déclarer que lÂ’envoi du message « unMessage » sur l e bus déclenche lÂ’appel de la méthode OnClickEvent, alors on écrit : bus.BindMsg("unMessage", new EventHandler<IvyMessageEventArgs> (OnClockEvent));
le EventHandler est une classe Générique qui nécessite un paramètre de type pour l'instanciation: IvyMessageEventArgs le OnClockEvent est une méthode d'instance de l'objet dans lequel se trouve le bindMsgn, et qui a pour prototype "void OnClockEvent(object sender, IvyMessageEventArgs e)"
Donc jÂ’écris en Windev le code donné ci-dessous (à la fin). Dans ce code, je créé un délégué .net pour créer le callback. JÂ’ai do nc écrit: pclMonHandler = DotNetDélégué ("testCallback","EventHandler<IvyMessageEventArgs>"), mais lors de la frappe, j'ai immédiatement l'erreur : Erreur : Le type de délégué .NET 'EventHandler<IvyMessageEventArgs>' est inconnu.
Même chose avec "EventHandler<IvyMessageEventArgs>()", ou "EventHandler<IvyMessageEventArgs()>", ou "<IvyMessageEventArgs>"
Pourtant il semble que pclMonHandler = DotNetDélégué ("testCallback","EventHandler<IvyMessageEventArgs>") soit la bonne écriture (dÂ’après le code C#). La seule écriture qui « passe » le cap de lÂ’analyse syntaxique est celle de mon précédent post, mais ça ne passe pas à la compilation, et en plus elle nÂ’a pas de sens comparé a u code C#. Les formats ci-dessus ne passant pas le cap de lÂ’analyse, impossible de compiler également.
Pourquoi est-ce que ça ne marche pas ? La DLL est la même (même fichier) que celle utilisée dans le code C# ci-dessus, et ça marche en C#. Est-ce que cÂ’est Windev qui est incapable de détecter correctement les callbacks quÂ’on peut écrire avec cette DLL ?
Code windev de lÂ’exemple : pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs") clTestBinding:add_callback(pclMonHandler)
pclBus:Start("134.206.255.255:2010")
pclBus:BindMsg(clTestBinding)
pclBus:SendMsg("unMessage",Null)
pclBus:Stop()
la fonction/procédure testCallback prend deux paramètres en entrée pour faire la même chose que void OnClockEvent(object sender, IvyMessageEventArgs e)
JC
Pour faire suite à mon post ci-dessus (et ça vous donnera peut-être
des idées pour des réponses), voici comment on écrit la même chose en
C# . Si on veut déclarer que lÂ’envoi du message « unMessage » sur l e
bus déclenche lÂ’appel de la méthode OnClickEvent, alors on écrit :
bus.BindMsg("unMessage", new EventHandler<IvyMessageEventArgs>
(OnClockEvent));
le EventHandler est une classe Générique qui nécessite un paramètre de
type pour l'instanciation: IvyMessageEventArgs
le OnClockEvent est une méthode d'instance de l'objet dans lequel se
trouve le bindMsgn, et qui a pour prototype "void OnClockEvent(object
sender, IvyMessageEventArgs e)"
Donc jÂ’écris en Windev le code donné ci-dessous (à la fin). Dans ce
code, je créé un délégué .net pour créer le callback. JÂ’ai do nc écrit:
pclMonHandler = DotNetDélégué
("testCallback","EventHandler<IvyMessageEventArgs>"),
mais lors de la frappe, j'ai immédiatement l'erreur :
Erreur : Le type de délégué .NET 'EventHandler<IvyMessageEventArgs>'
est inconnu.
Même chose avec "EventHandler<IvyMessageEventArgs>()", ou
"EventHandler<IvyMessageEventArgs()>", ou "<IvyMessageEventArgs>"
Pourtant il semble que pclMonHandler = DotNetDélégué
("testCallback","EventHandler<IvyMessageEventArgs>") soit la bonne
écriture (dÂ’après le code C#). La seule écriture qui « passe » le cap
de lÂ’analyse syntaxique est celle de mon précédent post, mais ça ne
passe pas à la compilation, et en plus elle nÂ’a pas de sens comparé a u
code C#. Les formats ci-dessus ne passant pas le cap de lÂ’analyse,
impossible de compiler également.
Pourquoi est-ce que ça ne marche pas ? La DLL est la même (même
fichier) que celle utilisée dans le code C# ci-dessus, et ça marche en
C#. Est-ce que cÂ’est Windev qui est incapable de détecter correctement
les callbacks quÂ’on peut écrire avec cette DLL ?
Code windev de lÂ’exemple :
pclBus est Ivy dynamique
pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding
clTestBinding = allouer IvyApplicationBinding
clTestBinding:Expression = "(.*)"
pclMonHandler est un IvyMessageEventArgs dynamique
pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs")
clTestBinding:add_callback(pclMonHandler)
pclBus:Start("134.206.255.255:2010")
pclBus:BindMsg(clTestBinding)
pclBus:SendMsg("unMessage",Null)
pclBus:Stop()
la fonction/procédure testCallback prend deux paramètres en entrée
pour faire la même chose que void OnClockEvent(object sender,
IvyMessageEventArgs e)
Pour faire suite à mon post ci-dessus (et ça vous donnera peut-être des idées pour des réponses), voici comment on écrit la même chose en C# . Si on veut déclarer que lÂ’envoi du message « unMessage » sur l e bus déclenche lÂ’appel de la méthode OnClickEvent, alors on écrit : bus.BindMsg("unMessage", new EventHandler<IvyMessageEventArgs> (OnClockEvent));
le EventHandler est une classe Générique qui nécessite un paramètre de type pour l'instanciation: IvyMessageEventArgs le OnClockEvent est une méthode d'instance de l'objet dans lequel se trouve le bindMsgn, et qui a pour prototype "void OnClockEvent(object sender, IvyMessageEventArgs e)"
Donc jÂ’écris en Windev le code donné ci-dessous (à la fin). Dans ce code, je créé un délégué .net pour créer le callback. JÂ’ai do nc écrit: pclMonHandler = DotNetDélégué ("testCallback","EventHandler<IvyMessageEventArgs>"), mais lors de la frappe, j'ai immédiatement l'erreur : Erreur : Le type de délégué .NET 'EventHandler<IvyMessageEventArgs>' est inconnu.
Même chose avec "EventHandler<IvyMessageEventArgs>()", ou "EventHandler<IvyMessageEventArgs()>", ou "<IvyMessageEventArgs>"
Pourtant il semble que pclMonHandler = DotNetDélégué ("testCallback","EventHandler<IvyMessageEventArgs>") soit la bonne écriture (dÂ’après le code C#). La seule écriture qui « passe » le cap de lÂ’analyse syntaxique est celle de mon précédent post, mais ça ne passe pas à la compilation, et en plus elle nÂ’a pas de sens comparé a u code C#. Les formats ci-dessus ne passant pas le cap de lÂ’analyse, impossible de compiler également.
Pourquoi est-ce que ça ne marche pas ? La DLL est la même (même fichier) que celle utilisée dans le code C# ci-dessus, et ça marche en C#. Est-ce que cÂ’est Windev qui est incapable de détecter correctement les callbacks quÂ’on peut écrire avec cette DLL ?
Code windev de lÂ’exemple : pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs") clTestBinding:add_callback(pclMonHandler)
pclBus:Start("134.206.255.255:2010")
pclBus:BindMsg(clTestBinding)
pclBus:SendMsg("unMessage",Null)
pclBus:Stop()
la fonction/procédure testCallback prend deux paramètres en entrée pour faire la même chose que void OnClockEvent(object sender, IvyMessageEventArgs e)
JC
ner0lph
Le mardi 06 Octobre 2009 Ã 00:15 par JC :
Bonjour
Comme indiqué dans la doc, je dois compiler mon code ci-dessous pour le tester, mais mon PC plante chaque fois que je veux compiler ce code (plantage sur la ligne DotNetDélégué), sachant que le code de mon application est juste celui-ci + le code de la procédure donnée ci- dessous. Il n’y a rien ailleurs.
J’ai intégré la DLL Ivy.dll (trouvée à http://www2.tls.cena.fr/pr= oducts/ivy/download/binaries.html si vous voulez tester, dans Windows, Ivy DLL C#) comme assemblage .NET. Je l’ai même intégrée dans les fichiers à inté= grer dans la compilation (mais que je le fasse ou non, ça n’a rien changé)= .
Avez-vous une idée ? La ligne qui fait planter est celle avec DotNetDélégué. Sans elle, la compilation se passe bien. De même, qu= e je mette le test « EnModeTest » ou non, ça plante à la compilation.
pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs"= ) SI pclMonHandler <> Null ALORS clTestBinding:add_callback(pclMonHandler) Info("ajout délégué OK") SINON Info("ajout délégué pas ok") FIN FIN
Comme indiqu=E9 dans la doc, je dois compiler mon code ci-dessous pour
le tester, mais mon PC plante chaque fois que je veux compiler ce code
(plantage sur la ligne DotNetD=E9l=E9gu=E9), sachant que le code de mon
application est juste celui-ci + le code de la proc=E9dure donn=E9e ci-
dessous. Il n=92y a rien ailleurs.
J=92ai int=E9gr=E9 la DLL Ivy.dll (trouv=E9e =E0 http://www2.tls.cena.fr/pr=
oducts/ivy/download/binaries.html
si vous voulez tester, dans Windows, Ivy DLL C#) comme
assemblage .NET. Je l=92ai m=EAme int=E9gr=E9e dans les fichiers =E0 int=E9=
grer
dans la compilation (mais que je le fasse ou non, =E7a n=92a rien chang=E9)=
.
Avez-vous une id=E9e ? La ligne qui fait planter est celle avec
DotNetD=E9l=E9gu=E9. Sans elle, la compilation se passe bien. De m=EAme, qu=
e
je mette le test =AB EnModeTest =BB ou non, =E7a plante =E0 la compilation.
pclBus est Ivy dynamique
pclBus =3D allouer Ivy
clTestBinding est un IvyApplicationBinding
clTestBinding =3D allouer IvyApplicationBinding
clTestBinding:Expression =3D "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique
pclMonHandler =3D
DotNetD=E9l=E9gu=E9("testCallback","IvyMessageEventArgs"=
)
SI pclMonHandler <> Null ALORS
clTestBinding:add_callback(pclMonHandler)
Info("ajout d=E9l=E9gu=E9 OK")
SINON
Info("ajout d=E9l=E9gu=E9 pas ok")
FIN
FIN
Comme indiqué dans la doc, je dois compiler mon code ci-dessous pour le tester, mais mon PC plante chaque fois que je veux compiler ce code (plantage sur la ligne DotNetDélégué), sachant que le code de mon application est juste celui-ci + le code de la procédure donnée ci- dessous. Il n’y a rien ailleurs.
J’ai intégré la DLL Ivy.dll (trouvée à http://www2.tls.cena.fr/pr= oducts/ivy/download/binaries.html si vous voulez tester, dans Windows, Ivy DLL C#) comme assemblage .NET. Je l’ai même intégrée dans les fichiers à inté= grer dans la compilation (mais que je le fasse ou non, ça n’a rien changé)= .
Avez-vous une idée ? La ligne qui fait planter est celle avec DotNetDélégué. Sans elle, la compilation se passe bien. De même, qu= e je mette le test « EnModeTest » ou non, ça plante à la compilation.
pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs"= ) SI pclMonHandler <> Null ALORS clTestBinding:add_callback(pclMonHandler) Info("ajout délégué OK") SINON Info("ajout délégué pas ok") FIN FIN
Comme indiqué dans la doc, je dois compiler mon code ci-dessous pour le tester, mais mon PC plante chaque fois que je veux compiler ce code (plantage sur la ligne DotNetDélégué), sachant que le code de mon application est juste celui-ci + le code de la procédure donnée ci- dessous. Il n’y a rien ailleurs.
J’ai intégré la DLL Ivy.dll (trouvée à http://www2.tls.cena.fr/pr= oducts/ivy/download/binaries.html si vous voulez tester, dans Windows, Ivy DLL C#) comme assemblage .NET. Je l’ai même intégrée dans les fichiers à inté= grer dans la compilation (mais que je le fasse ou non, ça n’a rien changé)= .
Avez-vous une idée ? La ligne qui fait planter est celle avec DotNetDélégué. Sans elle, la compilation se passe bien. De même, qu= e je mette le test « EnModeTest » ou non, ça plante à la compilation.
pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs"= ) SI pclMonHandler <> Null ALORS clTestBinding:add_callback(pclMonHandler) Info("ajout délégué OK") SINON Info("ajout délégué pas ok") FIN FIN
Comme indiqu=E9 dans la doc, je dois compiler mon code ci-dessous pour
le tester, mais mon PC plante chaque fois que je veux compiler ce code
(plantage sur la ligne DotNetD=E9l=E9gu=E9), sachant que le code de mon
application est juste celui-ci + le code de la proc=E9dure donn=E9e ci-
dessous. Il n=92y a rien ailleurs.
J=92ai int=E9gr=E9 la DLL Ivy.dll (trouv=E9e =E0 http://www2.tls.cena.fr/pr=
oducts/ivy/download/binaries.html
si vous voulez tester, dans Windows, Ivy DLL C#) comme
assemblage .NET. Je l=92ai m=EAme int=E9gr=E9e dans les fichiers =E0 int=E9=
grer
dans la compilation (mais que je le fasse ou non, =E7a n=92a rien chang=E9)=
.
Avez-vous une id=E9e ? La ligne qui fait planter est celle avec
DotNetD=E9l=E9gu=E9. Sans elle, la compilation se passe bien. De m=EAme, qu=
e
je mette le test =AB EnModeTest =BB ou non, =E7a plante =E0 la compilation.
pclBus est Ivy dynamique
pclBus =3D allouer Ivy
clTestBinding est un IvyApplicationBinding
clTestBinding =3D allouer IvyApplicationBinding
clTestBinding:Expression =3D "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique
pclMonHandler =3D
DotNetD=E9l=E9gu=E9("testCallback","IvyMessageEventArgs"=
)
SI pclMonHandler <> Null ALORS
clTestBinding:add_callback(pclMonHandler)
Info("ajout d=E9l=E9gu=E9 OK")
SINON
Info("ajout d=E9l=E9gu=E9 pas ok")
FIN
FIN
Comme indiqué dans la doc, je dois compiler mon code ci-dessous pour le tester, mais mon PC plante chaque fois que je veux compiler ce code (plantage sur la ligne DotNetDélégué), sachant que le code de mon application est juste celui-ci + le code de la procédure donnée ci- dessous. Il n’y a rien ailleurs.
J’ai intégré la DLL Ivy.dll (trouvée à http://www2.tls.cena.fr/pr= oducts/ivy/download/binaries.html si vous voulez tester, dans Windows, Ivy DLL C#) comme assemblage .NET. Je l’ai même intégrée dans les fichiers à inté= grer dans la compilation (mais que je le fasse ou non, ça n’a rien changé)= .
Avez-vous une idée ? La ligne qui fait planter est celle avec DotNetDélégué. Sans elle, la compilation se passe bien. De même, qu= e je mette le test « EnModeTest » ou non, ça plante à la compilation.
pclBus est Ivy dynamique pclBus = allouer Ivy
clTestBinding est un IvyApplicationBinding clTestBinding = allouer IvyApplicationBinding clTestBinding:Expression = "(.*)"
SI PAS EnModeTest() ALORS
pclMonHandler est un IvyMessageEventArgs dynamique pclMonHandler = DotNetDélégué("testCallback","IvyMessageEventArgs"= ) SI pclMonHandler <> Null ALORS clTestBinding:add_callback(pclMonHandler) Info("ajout délégué OK") SINON Info("ajout délégué pas ok") FIN FIN