OVH Cloud OVH Cloud

[WD75] problème avec les indirections

6 réponses
Avatar
dany
bonjour,

J'ai une chaine : chaine1 est une chaine = "bonjour monsieur <<nom>>
<<prenom>>"
Je dispose de toute une liste de variables avec leur code associé et je
souhaite pouvoir remplacer toutes mes variables de ma chaine par les bons
éléments relatifs à une personne.

variable = "<<nom>>"
code_associé = chercher_code_associé(variable) // =
"ma_personne:donner_nom()"
pour chaque variable trouvée dans la chaine
// remplacer par l'évaluation du code associé
chaine_remplacée = remplace(chaine1,variable,{code_associé})
finpour

seulement l'application me provoque une erreur :"l'élément
'ma_personne:donner_nom()' est inconnu."

Je ne vois pas la solution.
Avez-vous une idée?
Merci
Dany.

6 réponses

Avatar
farplus
Bonjour Dany,

je n'ai pas vraiement bien compris ton pb.
D'abord comme tu l'expliques, il ne s'agit nullement d'indirection.
Si tu veux réaliser ton souhait
il vaut mieux écrire
J'ai une chaine : chaine1 est une chaine = "bonjour monsieur <<nom>>
<<prenom>>"



chaine1 est une chaine="Bonjour monsieur %1 %2"

Je dispose de toute une liste de variables avec leur code associé


code associé ???? qu'est-ce aco ?

et je
souhaite pouvoir remplacer toutes mes variables de ma chaine par les bons
éléments relatifs à une personne.



puis
nom, prenom sont des chaines
chaine2 est une chaine=chaineconstruit(chaine1, nom, prenom)
que tu as trouvé par ta fonction cherche_qq()


A+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
dany
"farplus" a écrit dans le message de
news:
Bonjour Dany,

je n'ai pas vraiement bien compris ton pb.
D'abord comme tu l'expliques, il ne s'agit nullement d'indirection.
Si tu veux réaliser ton souhait
il vaut mieux écrire
> J'ai une chaine : chaine1 est une chaine = "bonjour monsieur <<nom>>
> <<prenom>>"

chaine1 est une chaine="Bonjour monsieur %1 %2"

> Je dispose de toute une liste de variables avec leur code associé
code associé ???? qu'est-ce aco ?

> et je
> souhaite pouvoir remplacer toutes mes variables de ma chaine par les


bons
> éléments relatifs à une personne.

puis
nom, prenom sont des chaines
chaine2 est une chaine=chaineconstruit(chaine1, nom, prenom)
que tu as trouvé par ta fonction cherche_qq()


A+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




je vais essayer de faire plus simple. :)
je veux pouvoir évaluer une variable dont le contenu est l'appel à une
méthode de classe.
ma_personne est une cPersonne dynamique
variable est une chaine = "ma_personne:donner_nom()"

cette ligne de code : nom_de_la_personne est une chaine = {variable}
provoque l'erreur suivante : L'élément 'ma_personne:donner_nom()' est
inconnu.

D'après mes recherches c'est un souci qui concerne l'évaluation de l'objet
qui ne fonctionne pas.
Et je ne vois toujours pas la solution...
Avatar
farplus
dany a émis l'idée suivante :
"farplus" a écrit dans le message de
news:
Bonjour Dany,

je n'ai pas vraiement bien compris ton pb.
D'abord comme tu l'expliques, il ne s'agit nullement d'indirection.
Si tu veux réaliser ton souhait
il vaut mieux écrire
J'ai une chaine : chaine1 est une chaine = "bonjour monsieur <<nom>>
<<prenom>>"



chaine1 est une chaine="Bonjour monsieur %1 %2"

Je dispose de toute une liste de variables avec leur code associé


code associé ???? qu'est-ce aco ?

et je
souhaite pouvoir remplacer toutes mes variables de ma chaine par les bons
éléments relatifs à une personne.



puis
nom, prenom sont des chaines
chaine2 est une chaine=chaineconstruit(chaine1, nom, prenom)
que tu as trouvé par ta fonction cherche_qq()


A+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




je vais essayer de faire plus simple. :)
je veux pouvoir évaluer une variable dont le contenu est l'appel à une
méthode de classe.
ma_personne est une cPersonne dynamique
variable est une chaine = "ma_personne:donner_nom()"

cette ligne de code : nom_de_la_personne est une chaine = {variable}
provoque l'erreur suivante : L'élément 'ma_personne:donner_nom()' est
inconnu.

D'après mes recherches c'est un souci qui concerne l'évaluation de l'objet
qui ne fonctionne pas.
Et je ne vois toujours pas la solution...



essaie avec compile(...)

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
mat
dany wrote:
je veux pouvoir évaluer une variable dont le contenu est l'appel à une
méthode de classe.
ma_personne est une cPersonne dynamique
variable est une chaine = "ma_personne:donner_nom()"

cette ligne de code : nom_de_la_personne est une chaine = {variable}
provoque l'erreur suivante : L'élément 'ma_personne:donner_nom()' est
inconnu.

D'après mes recherches c'est un souci qui concerne l'évaluation de l'objet
qui ne fonctionne pas.
Et je ne vois toujours pas la solution...




Bonjour,
Deux observations:
1) variable est une chaine = "ma_personne:donner_nom()"
Ceci attribue "ma_personne:donner_nom()" à la variable de nom 'Variable'
et ne pas le nom d'une personne.

2) nom_de_la_personne est une chaine = {variable}
Si cela fonctionnait, le résultat serait de toute façon la chaîne
"ma_personne:donner_nom()" ce qui ne peut non plus être la solution.

Suggestions:
1) Utiliser des noms clairs pour les variables. 'Variable' n'est pas un
nom idéal pour une variable. P.ex. vNomPersonne ou vNomProcedure est
plus explicite.
2) Lire l'aide sur les indirections et utiliser la syntaxe
{NomVariable,indVariable}.
3) Clarifier si la variable doit contenir une valeur ou le nom d'une
fonction.
4) Vérifier la portée de la variable à lire et suivant 3) attribuer la
valeur ou exécuter la procédure avec ExécuteTraitement.
Avatar
dany
"mat" a écrit dans le message de
news:41482808$
dany wrote:
> je veux pouvoir évaluer une variable dont le contenu est l'appel à une
> méthode de classe.
> ma_personne est une cPersonne dynamique
> variable est une chaine = "ma_personne:donner_nom()"
>
> cette ligne de code : nom_de_la_personne est une chaine = {variable}
> provoque l'erreur suivante : L'élément 'ma_personne:donner_nom()' est
> inconnu.
>
> D'après mes recherches c'est un souci qui concerne l'évaluation de


l'objet
> qui ne fonctionne pas.
> Et je ne vois toujours pas la solution...
>

Bonjour,
Deux observations:
1) variable est une chaine = "ma_personne:donner_nom()"
Ceci attribue "ma_personne:donner_nom()" à la variable de nom 'Variable'
et ne pas le nom d'une personne.

2) nom_de_la_personne est une chaine = {variable}
Si cela fonctionnait, le résultat serait de toute façon la chaîne
"ma_personne:donner_nom()" ce qui ne peut non plus être la solution.

Suggestions:
1) Utiliser des noms clairs pour les variables. 'Variable' n'est pas un
nom idéal pour une variable. P.ex. vNomPersonne ou vNomProcedure est
plus explicite.
2) Lire l'aide sur les indirections et utiliser la syntaxe
{NomVariable,indVariable}.
3) Clarifier si la variable doit contenir une valeur ou le nom d'une
fonction.
4) Vérifier la portée de la variable à lire et suivant 3) attribuer la
valeur ou exécuter la procédure avec ExécuteTraitement.



j'ai réussi à contourner le problème :

1 - j'ai créé une méthode dans ma classe cPersonne

PROCEDURE donner_membre(nom_membre)
RENVOYER {":"+nom_membre}

2 - j'ai divisé mes variables en 2, 1ere variable = nom de l'objet, 2eme
variable = nom du membre

3 - appel :
contenu_du_membre_demandé = {variable1}:donner_membre(variable2)

je peux ainsi grace à cette astuce rendre tous les éléments d'un objet de
manière dynamique.

exemple :
avoir le nom de l'objet "ma_personne"
variable1 = "ma_personne"
variable2 = "nom"
ou son adresse
variable2 = "adresse"

Merci pour votre aide en tout cas ;)
Avatar
mat
dany wrote:
"mat" a écrit dans le message de
news:41482808$

dany wrote:

je veux pouvoir évaluer une variable dont le contenu est l'appel à une
méthode de classe.
ma_personne est une cPersonne dynamique
variable est une chaine = "ma_personne:donner_nom()"

cette ligne de code : nom_de_la_personne est une chaine = {variable}
provoque l'erreur suivante : L'élément 'ma_personne:donner_nom()' est
inconnu.

D'après mes recherches c'est un souci qui concerne l'évaluation de





l'objet

qui ne fonctionne pas.
Et je ne vois toujours pas la solution...




Bonjour,
Deux observations:
1) variable est une chaine = "ma_personne:donner_nom()"
Ceci attribue "ma_personne:donner_nom()" à la variable de nom 'Variable'
et ne pas le nom d'une personne.

2) nom_de_la_personne est une chaine = {variable}
Si cela fonctionnait, le résultat serait de toute façon la chaîne
"ma_personne:donner_nom()" ce qui ne peut non plus être la solution.

Suggestions:
1) Utiliser des noms clairs pour les variables. 'Variable' n'est pas un
nom idéal pour une variable. P.ex. vNomPersonne ou vNomProcedure est
plus explicite.
2) Lire l'aide sur les indirections et utiliser la syntaxe
{NomVariable,indVariable}.
3) Clarifier si la variable doit contenir une valeur ou le nom d'une
fonction.
4) Vérifier la portée de la variable à lire et suivant 3) attribuer la
valeur ou exécuter la procédure avec ExécuteTraitement.




j'ai réussi à contourner le problème :

1 - j'ai créé une méthode dans ma classe cPersonne

PROCEDURE donner_membre(nom_membre)
RENVOYER {":"+nom_membre}

2 - j'ai divisé mes variables en 2, 1ere variable = nom de l'objet, 2eme
variable = nom du membre

3 - appel :
contenu_du_membre_demandé = {variable1}:donner_membre(variable2)

je peux ainsi grace à cette astuce rendre tous les éléments d'un objet de
manière dynamique.

exemple :
avoir le nom de l'objet "ma_personne"
variable1 = "ma_personne"
variable2 = "nom"
ou son adresse
variable2 = "adresse"

Merci pour votre aide en tout cas ;)




Merci à toi, j'ai appris quelque chose :-)