| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 20 février 2017 - 11:26 |
Bonjour,
Je voudrais connaitre le nom du tableau passé en paramètre dans une procédure.
Malheureusement, la propriété ..Nom n'existe pas pour une variable comme pour un fichier HFSQL.
Existe t il une fonction ou une méthode pour obtenir l'équivalent de la propriété ..Nom ?
Illustration :
Tableau_ATraiter est tableau de chaîne Essai(Tableau_ATraiter)
Procedure Essai(Tab_ATraiter) NomTab_ATraiter est chaîne=Fonction_ou_ Procedure(tab_ATraiter)
je voudrais que la procédure "Fonction_ou_Procédure" renvoie "Tableau_ATraiter"
Merci d'avance pour vos retours |
| |
| |
| | | |
|
| | |
| |
Posté le 20 février 2017 - 11:43 |
Bonjour, Désolé de répondre à une question par une autre question, mais pour quoi faire ? Pourquoi ta procédure a besoin de connaitre le nom de la variable passée en paramètre ?
Frédéric.
"Sylvain RICAU" a écrit dans le message de groupe de discussion : 2017c94152b02a8fecae079c2d3e37745b14@news.pcsoft.fr...
Bonjour,
Je voudrais connaitre le nom du tableau passé en paramètre dans une procédure.
Malheureusement, la propriété ..Nom n'existe pas pour une variable comme pour un fichier HFSQL.
Existe t il une fonction ou une méthode pour obtenir l'équivalent de la propriété ..Nom ?
Illustration :
Tableau_ATraiter est tableau de chaine Essai(Tableau_ATraiter)
PROCEDURE Essai(Tab_ATraiter) NomTab_ATraiter est chaine=Fonction_ou_ Procédure(tab_ATraiter)
je voudrais que la procédure "Fonction_ou_Procédure" renvoie "Tableau_ATraiter"
Merci d'avance pour vos retours |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 20 février 2017 - 18:55 |
Bonjour Frédéric,
Car j'ai besoin d'informations concernant le tableau que j'ai déjà déterminées, que je ne veux pas redéterminer et auxquelles j'ai accès uniquement par le nom du tableau.
As tu une piste à me proposer ?
Cdl |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 950 messages Popularité : +53 (63 votes) |
|
Posté le 21 février 2017 - 00:00 |
Bonjour,
je pense qu'en utilisant les indirections, tu peux trouver ton bonheur
http://doc.pcsoft.fr/fr-FR/?1512005&name=Operateur_indirection_champ_et_rubrique
jordan |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 571 messages Popularité : +222 (260 votes) |
|
Posté le 21 février 2017 - 04:19 |
Bonjour,
Quel est le type d'informations que vous avez besoin de récupérer pour avoir besoin du nom de la variable ?
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 21 février 2017 - 07:56 |
Bonjour,
Par exemple, j'ai besoin de connaitre le membre correspondant à l'identifiant d'une ligne du tableau, ce membre étant définit dans un autre tableau dont la clé est le nom du tableau.
En réponse à Jordan, je ne pense pas que l'utilisation des indirections soit la solution car l'indirection permet d'accéder à une variable à partir de son nom et non l'inverse.
Cdl |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 355 messages Popularité : +37 (39 votes) |
|
Posté le 21 février 2017 - 08:37 |
Bonjour Sylvain,
SI tu veux récupérer le nom du tableau dans ta procédure, pourquoi ne pas directement passer ce nom (au lieu de la variable) et ensuite accéder au contenu par les indirections ? Un truc du genre par exemple
Tableau_ATraiter est tableau de chaîne Essai("Tableau_ATraiter")
Procedure Essai(sNomTab)
Tab_ATraiter est un tableau dynamique Tab_ATraiter<={sNomTab,indVariable} A+
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 571 messages Popularité : +222 (260 votes) |
|
Posté le 21 février 2017 - 10:30 |
Je suis désolé, mais je ne comprends toujours pas ce que tu veux faire, mais pour moi la seule solution reste de passer le nom de ton tableau en paramètre.
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 21 février 2017 - 10:37 |
Bonjour Francis,
Merci pour ta proposition.
C'est effectivement une solution, mais que je souhaiterais éviter, car cela nécessite de revoir une bonne partie de mon code.
Donc s'il y avait une autre solution, cela m'arrangerait.
Cdl |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 43 messages Popularité : +1 (1 vote) |
|
Posté le 21 février 2017 - 10:42 |
Bonjour,
Un petit bout dfe code avec les indirections :
Procedure gproc_calcul_pied_ligne(nom_fen="",nom_fic="")
SI nom_fen="" OU nom_fic="" ALORS Erreur("La procédure attend le nom d'une fenêtre et d'un fichier") RETOUR FIN
codetva est un entier montant_ligne est un monétaire nfe, nfi sont des chaînes
nfe=nom_fen nfi=nom_fic
{nfe+".TOTTVA",indChamp}=0 {nfe+".NETHT",indChamp}=0 {nfe+".NETTTC",indChamp}=0 {nfe+".BRUTHT",indChamp}=0
Cela devrait convenir.
Hubert |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 940 messages Popularité : +66 (68 votes) |
|
Posté le 21 février 2017 - 11:41 |
bonjour Sylvain,
vous pouvez tester quelque chose comme ceci , mais ce n'est pas super super.... Je pense qu'il faudra quand même revoir votre code, soit comme proposé par Francis utiliser les indirections, ou bien encapsulé vos tableaux de chaines dans des classes.
_my_tab est un tableau de chaîne
Ajoute(_my_tab,"toto") Ajoute(_my_tab,"tata")
ma_procedure(_my_tab)
Procedure ma_procedure(vp_tab)
PRIVÉ _my_buff est un Buffer _desc_param_xml est un xmlDocument _noeud est un xmlNoeud
Sérialise(vp_tab,_my_buff,psdXML) _desc_param_xml=XMLOuvre(_my_buff,depuisChaîne) _noeud=_desc_param_xml..NoeudRacine[1]..NoeudFils[1] Info(_noeud..Nom)
bon dèv Message modifié, 21 février 2017 - 11:41 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 355 messages Popularité : +37 (39 votes) |
|
Posté le 21 février 2017 - 11:42 |
Re,
C'est effectivement une solution, mais que je souhaiterais éviter, car cela nécessite de revoir une bonne partie de mon code.
Donc s'il y avait une autre solution, cela m'arrangerait. Je ne vois pas simplement d'autre solution, la propriété nom n'étant pas utilisable dans ce cas. Cela dit la modification n'est pas bien conséquente avec la Recherche/Remplace de l’éditeur, associée éventuellement avec les références croisées. Probablement que cela irait bien plus vite que de rechercher autre chose.
A+
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 88 messages Popularité : +2 (4 votes) |
|
Posté le 21 février 2017 - 13:10 |
Merci à tous pour vos réponses.
Une mention spéciale à Christophe pour l'originalité de la solution proposée.
A+ |
| |
| |
| | | |
|
| | |
| |
Posté le 21 février 2017 - 13:45 |
Avec les indirections :
Version d'origine :
Procdure fff( a est un entier)
Version modifiée :
Procedure fff ( sch est une chaîne ) Info( sch ) a est un entier a = {sch, indVariable }
On a donc très peu de changement dans la procédure elle-même, et très peu aussi au niveau du programme appelant. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 355 messages Popularité : +37 (39 votes) |
|
Posté le 21 février 2017 - 15:16 |
Bonjour Joel,
As-tu testé ta proposition ? Chez moi cette méthode ne marche pas Erreur : "Le paramètre 1 de type... ne peut être converti en type chaine"
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Posté le 21 février 2017 - 20:46 |
Dans mon idée, j'avais ceci dans la procédure appelante :
i est un entier fff("i") |
| |
| |
| | | |
|
| | |