OVH Cloud OVH Cloud

Nom de variable variable ??!!

7 réponses
Avatar
Julien
Est-ce possible de créer une classe avec un nom généré à la volée ?
ex :
Gauche(Nom, 3)+Droite(Clef, 2) est une ClasseClient

Merci

Julien

7 réponses

Avatar
R&B
Julien wrote:

Est-ce possible de créer une classe avec un nom généré à la volée ?
ex :
Gauche(Nom, 3)+Droite(Clef, 2) est une ClasseClient

Merci

Julien





cela ne vas pas être possible ... sauf ptêt via la compilation dynamique
pour déclarer la var.
// dans init de la fenêtre/projet

CodeàCompiler est une chaîne = "GLOBAL"+rc+...
Gauche(Nom, 3)+Droite(Clef, 2)+" est une ClasseClient"
Res est une chaîne= Compile("dynDeclare", CodeàCompiler)
SI Res = "" ALORS
ExécuteTraitement("DynDecalre", trtProcédure)
SINON
Erreur("Erreur compilation dynamique")
FIN

mais ensuite à utiliser cela ne va pas être de la tarte.
la construction des appels via compile dyn à chaque coups... car je ne
vois pas comment appeler une variable donc le nom est dynamique (lol)

@ moins de tous compiler d'un coup (c'est possible en créant le code
dans un .txt, des bon replaces et une compilation du contenu du .txt)
après la création de la variable.

ainsi tous les appels de méthode serais dispo

ne vaut-il pas mieux monter un tableau dynamique de structure ?
et le lier avec une table (liste des nom) pour faire correspondre les
obet à des nom (sur la base des indices respectifs)

réalisation : à tester, j'ai jamais monté de tels trucs (du moins pas
avec des classes)
// on va utiliser un tableau de structure
// la structure contien l'objet et le nom
sStr est une structure
nom est une chaine
obj est un ClasseClient
fin

// on déclare le tableau vide dont les élément sont des structures
nTab est un entier
tTab est un tableau dynamique de nTab sStr

// création d'un élément
nTab=Dimension(tTab,nTab+1)

// vidage du tableau
nTab=0
Dimension(tTab,nTab)

// Utilisation du tableau

pour i=1 à nTab
tTrab[Indice]:Nom // donne le nom du i ieme élément
tTab[Indice]:Obj.Methode() // execute la méthode pour le i ièeme objet
fin



merci de me donner le résultat de vos test en direct
je suis particulièrement intéressé par la suite de cette idée

@+ R&B de rbesset.net : portail windev
Avatar
Julien
J'étais bien parti pour faire ça :
un tableau de classes, sauf que tous mes éléments à mettre dans le tableau
non pas le mêm type (j'entend par la pas la mêm classe)...

Alors comment faire ?

Merci
Julien


"R&B" a écrit dans le message news:
bjpuo3$op1$
Julien wrote:

> Est-ce possible de créer une classe avec un nom généré à la volée ?
> ex :
> Gauche(Nom, 3)+Droite(Clef, 2) est une ClasseClient
>
> Merci
>
> Julien
>
>

cela ne vas pas être possible ... sauf ptêt via la compilation dynamique
pour déclarer la var.
// dans init de la fenêtre/projet

CodeàCompiler est une chaîne = "GLOBAL"+rc+...
Gauche(Nom, 3)+Droite(Clef, 2)+" est une ClasseClient"
Res est une chaîne= Compile("dynDeclare", CodeàCompiler)
SI Res = "" ALORS
ExécuteTraitement("DynDecalre", trtProcédure)
SINON
Erreur("Erreur compilation dynamique")
FIN

mais ensuite à utiliser cela ne va pas être de la tarte.
la construction des appels via compile dyn à chaque coups... car je ne
vois pas comment appeler une variable donc le nom est dynamique (lol)

@ moins de tous compiler d'un coup (c'est possible en créant le code
dans un .txt, des bon replaces et une compilation du contenu du .txt)
après la création de la variable.

ainsi tous les appels de méthode serais dispo

ne vaut-il pas mieux monter un tableau dynamique de structure ?
et le lier avec une table (liste des nom) pour faire correspondre les
obet à des nom (sur la base des indices respectifs)

réalisation : à tester, j'ai jamais monté de tels trucs (du moins pas
avec des classes)
// on va utiliser un tableau de structure
// la structure contien l'objet et le nom
sStr est une structure
nom est une chaine
obj est un ClasseClient
fin

// on déclare le tableau vide dont les élément sont des structures
nTab est un entier
tTab est un tableau dynamique de nTab sStr

// création d'un élément
nTab=Dimension(tTab,nTab+1)

// vidage du tableau
nTab=0
Dimension(tTab,nTab)

// Utilisation du tableau

pour i=1 à nTab
tTrab[Indice]:Nom // donne le nom du i ieme élément
tTab[Indice]:Obj.Methode() // execute la méthode pour le i ièeme objet
fin



merci de me donner le résultat de vos test en direct
je suis particulièrement intéressé par la suite de cette idée

@+ R&B de rbesset.net : portail windev



Avatar
Julien
Superbe !

Je n'avais pas lu votre conseil juska la fin, je pense que cela peu
fonctionner :
Un tablo dynamique contenant des structures, chaque structure contenant un
nom associé à une classe !

Je vais tester biensur, donner moi un mail pour que je vous commente le
résultat.

Je suis content de trouver aussi un portail de dev Windev www.rbesset.net
car j'ai bcp chercher des supports windev sur le net mais en vain.

Merci bcp !
Julien
Avatar
Firetox
Bonjour,

on peut declarer des variable global dans l'init du projet en copilation
dynamique
voici le test que j'ai fait

// init du projet
CodeàCompiler est une chaîne = "GLOBAL"+RC+...
"toto est un c_log4wd"
Res est une chaîne= Compile("dynDeclare", CodeàCompiler)
SI Res = "" ALORS
ExécuteTraitement("dynDeclare", trtProcédure)
SINON
Erreur("Erreur compilation dynamique")
FIN

// ensuite dans une fentre j'ai fait :
// m_membre etant un membre de la classe c_log

monObjet = "toto"
trace({monObjet}:m_membre)

et ca marche
voila

Bon dev
@+

Firetox


"Julien" a écrit dans le message de news:
bjpsv4$9bn$
Est-ce possible de créer une classe avec un nom généré à la volée ?
ex :
Gauche(Nom, 3)+Droite(Clef, 2) est une ClasseClient

Merci

Julien




Avatar
Julien
Ok, merci FireTox

J'ai mis en place la solution de R&B, elle fonctione à merveille

Il me reste maintenant à gérer la suppression d'éléments de mon tableau, les
classes vont-elles se supprimer aussi ?

Merci à tous !
Avatar
R&B
Julien wrote:
Superbe !

Je n'avais pas lu votre conseil juska la fin, je pense que cela peu
fonctionner :
Un tablo dynamique contenant des structures, chaque structure contenant un
nom associé à une classe !



Bien !


Je vais tester biensur, donner moi un mail pour que je vous commente le
résultat.

Je suis content de trouver aussi un portail de dev Windev www.rbesset.net
car j'ai bcp chercher des supports windev sur le net mais en vain.


Merci.
Ne pas hésiter à apporter vos contributions, nos visiteurs/membres
payent trés bien... en gratitude 8-D.

Pour me contacter, voir l'adresse utilisée pour mes posts sur ce NG
(elle figure en clair avec un client de newsgroup),
ou au pire passer par le formulaire de contact du site.
je ne laisse pas d'adresse en clair pour des raison évidentes. Je recois
déja assez de mails indésirables.


Merci bcp !
Julien




Avatar
R&B
Julien wrote:

Ok, merci FireTox

J'ai mis en place la solution de R&B, elle fonctione à merveille

Il me reste maintenant à gérer la suppression d'éléments de mon tableau, les
classes vont-elles se supprimer aussi ?

Merci à tous !




C'est pile la question que je me suis posé.

En théorie oui, les éléments du tableau ne sont pas dynamique.
J'entends par la que les objets sont considérés comme des variables.
Leur allocation mémoire est fixe. On ne devrai pas avoir de problème de
libération.

Reste une chose (en lisant mieux) :
"suppression d'éléments de mon tableau"
Je ne pense pas que cela soit possible dans un tableau dynamique.
Du moins pas directement, mais en copiant dans un tableau intermédiaire,
vidant le tableau d'origine et remettant les choses en place on doit y
parvenir.

Vraiment, Merci de me faire parvenir un exemple plus complet histoire de
publier cet exemple 'avancé' (si l'on peut juger).

@+ R&B