PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Code dynamique et composant
Code dynamique et composant
Débuté par Nicolas Magnien, 04 avr. 2016 17:20 - 8 réponses
Membre enregistré
63 messages
Popularité : +4 (4 votes)
Posté le 04 avril 2016 - 17:20
Bonjour

Je souhaite utiliser une classe définie dans un composant externe depuis du code dynamique...
Après l'utilisation de compile(...) j'ai l'erreur suivante "Le type NomDeMaClasse est inconnu. (58,20)"

Quelqu'un à déjà vu ce problème? Y a t il une ruse?

Merci d'avance...

Nicolas Magnien
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 05 avril 2016 - 10:47
Bonjour

Avez-vous essayé "NomDuComposant.NomDeLaClasse" ?
Membre enregistré
63 messages
Popularité : +4 (4 votes)
Posté le 05 avril 2016 - 16:23
Bonjour
Oui j'ai essayé malheureusement.... j'ai essaye aussi avec les ""...

Merci pour votre réponse
Membre enregistré
505 messages
Popularité : +18 (18 votes)
Posté le 09 avril 2016 - 13:35
Bonjour à tous,

Je ne rencontre pas de difficulté pour un code compilé dynamiquement qui instancie une classe définie dans un composant externe.

Pas besoin de guillemets pour encadrer le nom de la classe. De toute manière, leur utilisation ne provoque pas d'erreur.

Il faut vérifier que la classe est bien visible/accessible de l'extérieur du composant et que le composant est effectivement chargé par l'application.

Autre précision, dans mon cas, le composant externe partage le contexte du projet.

Nikoniko555,
pour une aide plus efficace donne nous ton code avec en particulier la partie qui porte sur la compilation dynamique.

:)

--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Membre enregistré
63 messages
Popularité : +4 (4 votes)
Posté le 18 avril 2016 - 12:07
Bonjour

Merci pour votre aide.

Yann: J'ai fais une erreur, effectivement la syntaxe "NomDuComposant.NomDeLaClasse" fonctionne cependant je n'ai pas de solution pour les procédures globales des composants (Execute() peut fonctionner mais c'est lourd!)

JBO: Dans le cas du contexte contexte partagé, tout fonctionne bien. c'est une option que je ne connaissait même pas je vais fouiller pour voir l'incidence d'utiliser le global sur tous les composants de mon projet! (je vous cache pas que ca m'inquiète un brin!!)

Merci encore...

Pour info, dans l'intervalle, j'ai contacté le ST, il on été (une fois de plus) efficaces malgré WD20 et non 21..... Voila ca mérite d'être précisé...
Membre enregistré
63 messages
Popularité : +4 (4 votes)
Posté le 12 février 2019 - 17:26
Bonjour

Re déterre mon sujet!!!

Quelqu un a trouvé le moyen d'appeler depuis du code dynamique une procédure contenue dans un composant externe (contexte global mono instance)
Je précise en WD24 et sans utilisation de Execute ou autre...

Merci d'avance!!!

--
Nicolas Magnien
oXalis [Supervision Industrielle - Procédés Batch - ERP - MES]
www.decobecq-automatismes.fr
Membre enregistré
63 messages
Popularité : +4 (4 votes)
Posté le 17 mai 2019 - 11:51
Bonjour

Je déterre encore!!!

Personne???


Nicolas Magnien a écrit :
Bonjour

Re déterre mon sujet!!!

Quelqu un a trouvé le moyen d'appeler depuis du code dynamique une procédure contenue dans un composant externe (contexte global mono instance)
Je précise en WD24 et sans utilisation de Execute ou autre...

Merci d'avance!!!

--
Nicolas Magnien
oXalis [Supervision Industrielle - Procédés Batch - ERP - MES]
www.decobecq-automatismes.fr


--
Nicolas Magnien
oXalis [Supervision Industrielle - Procédés Batch - ERP - MES]
www.decobecq-automatismes.fr
Membre enregistré
5 messages
Popularité : +1 (1 vote)
Posté le 14 février 2022 - 10:00
Bonjour,
c'est un vieux sujet, mais au cas où, voici une solution avec ExecuteCode.

J'avais une méthode list_command disponible dans une procédure globale de mon composant externe. Celui-ci n'étant pas connu à l'exécution, je ne pouvais y accéder que par compilation dynamique.

Voilà un exemple :

commands is array of string

code is string = [
commands = %1.CP_Composant_test.list_command()
]

ExecuteCode(StringBuild(code, :component_name))



Bonne journée :)
Membre enregistré
287 messages
Popularité : +51 (79 votes)
Posté le 14 février 2022 - 13:12
CollectionDeProcédureDeTonComposant.LaProcédure

A+ 8)

--
667, EKIP EKIP