|
| [WD14] operateur d'indirection pour allouer une classe |
| Iniciado por philuser, 23,feb. 2009 18:33 - 4 respuestas |
| |
| | | |
|
| |
| Publicado el 23,febrero 2009 - 18:33 |
Bonjour,
Y a t il un moyen pour allouer une classes en fonction d'un paramètre. J'ai essayé la méthode suivante :
pclNewObj = allouer un {sCObjNeuf}
sCObjNeuf étant une chaine contenant le vrai non de l'objet a instanciée bien sur. Mais WinDev me gère une erreur sur l'opérateur d'indirection "{"
Quelqu'un aurait-il une solution
Merci |
| |
| |
| | | |
|
| | |
| |
| Publicado el 23,febrero 2009 - 19:24 |
Bonjour,
Tu peux utiliser un SELON pour gérer chaque cas (et du coup te passer des indirections), ou utiliser la compilation dynamique (une procédure qui renvoie le pointeur en question).
La première méthode t'oblige à revoir ton code à chaque nouvelle classe, la deuxième me parait "lourde" pour une simple instanciation. A voir en fonction des besoin, mais j'avoue être étonné qu"on ne puisse pas le faire "simplement", ou alors je rate quelquechose.
Frédéric.
"philuser" <philuser@gmail.com> a écrit dans le message de news:685066b5fa4473e5ac2e89a13f53dbb8@news.pcsoft...
Bonjour,
Y a t il un moyen pour allouer une classes en fonction d'un paramètre.
J'ai essayé la méthode suivante :
pclNewObj = allouer un {sCObjNeuf}
sCObjNeuf étant une chaine contenant le vrai non de l'objet a instanciée
bien sur.
Mais WinDev me gère une erreur sur l'opérateur d'indirection "{"
Quelqu'un aurait-il une solution
Merci
|
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,febrero 2009 - 08:15 |
Bonjour,
Frédéric DEMILLY a écrit dans le message de news <49a2d7e0$1@news.pcsoft.fr> :
Tu peux utiliser un SELON pour gérer chaque cas (et du coup te passer des indirections), ou utiliser la compilation dynamique (une procédure qui renvoie le pointeur en question).
La seconde solution est la bonne, elle a été testée des milliers de fois.
FUNCTION GLOBAL GetAdapter(sClass is string) pclObject is object dynamic
WHEN EXCEPTION IN sSource is string sSource = "pclMyObject is "+sClass+" dynamic" + CR sSource += "pclMyObject = new "+sClass+ CR sSource += "RESULT pclMyObject" sResultatCompile is string sResultatCompile = Compile("Factory_Proc_dynamique", sSource) IF sResultatCompile = "" THEN pclObject = ExecuteProcess("Factory_Proc_dynamique", trtProcedure) ELSE Application::Log( Application::ERR_SEVERE, "Erreur lors de la création d'un objet "+sClass+". "+sResultatCompile) END DO Application::Log( Application::ERR_SEVERE, ExceptionInfo(errFullDetails)) END RESULT pclObject
amicalement, -- Eric Boyron |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,febrero 2009 - 09:52 |
Ok Merci de votre assistance, j'étais en effet arrivé au même constat soit un une succession d'un embranchement SELON CAS1 .... soit la compilation dynamique. J'avais juste trouvé la première peut élégante (assujetti à une modification du source a chaque évolution de la variable) et la seconde franchement très lourd dingue pour effectuer une simple indirection de code sur une instanciation de classe. Mais soit... on fera donc lourd et compliqué.
Merci encore pour votre aide |
| |
| |
| | | |
|
| | |
| |
| Publicado el 03,noviembre 2018 - 17:20 |
Bonjour,
En version 23, je suis étonné qu'une
pclMonEtatDestinatio est un "cEtatGazeux" dynamique
MonEtatDestinationEXPRESS est un sClasseEtatDestination dynamique
Avez vous essayé avec la version 24?
D'avance merci pour vos lumières. |
| |
| |
| | | |
|
| | | | |
| | |
|