Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut Indirection variable globale

    Bonjour,

    Le problème que je rencontre est le suivant :

    J'ai créé le fichier PARAMETRES suivant ...
    x.jpg

    A l'initialisation de mon programme, je déclare le nom de chaque variable globale comme suit :
    y.jpg

    Ensuite, je veux réaliser le chargement du nom de mes variables globales et leur contenu par le biais de cette procédure InitialisationProgramme

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    // Initialisation des variables globales déclarées dans le code du projet
    PROCEDURE InitialisationVariablesGlobales()
    	
    // Chargement des noms de chaque variable et leur valeur respective à partir du fichier "PARAMETRES"
    
    HLitPremier(PARAMETRES,NomVariable)
    TANTQUE PAS HEnDehors(PARAMETRES)
    	
    	Choix est entier = 0
    	SI PARAMETRES.typeVariable = "Numérique" THEN 
    		Choix = 2
    	SINON	SI PARAMETRES.typeVariable = "Texte" THEN 
    		Choix = 3
    	SINON SI PARAMETRES.typeVariable = "Booléen" THEN 
    		Choix = 1
    	SINON
    		Choix = 0
    	FIN
    	
    	// Traitement selon le type de la variable
    	SELON Choix
    		CAS 3	// Texte
    			{PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
    		CAS 2	// Numérique
    			{PARAMETRES.NomVariable} = Val(PARAMETRES.ContenuVariable)
    		CAS 1	// Booléen
    			{PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable="Faux" ? "Faux" SINON "Vrai"
    		AUTRE CAS
    			Info ("Cas non défini") 	
    	FIN
    
     	Trace (PARAMETRES.NomVariable,TAB,PARAMETRES.ContenuVariable,TAB,TAB,{PARAMETRES.NomVariable}))
    		
    	HLitSuivant(PARAMETRES, NomVariable)
    	
    FIN
    Voilà le résultat qui n'est pas satisfaisant car je n'est pas affecté les valeurs dans mes variables globales ...
    z.jpg

    Je ne sais pas comment utiliser les indirections pour récupérer le nom de ces variables et y affecter leur contenu !

    Je BUG...
    La patience est d'or, l'aide est inestimable ...

  2. #2
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : septembre 2008
    Messages : 912
    Points : 482
    Points
    482

    Par défaut

    Bonsoir,

    As-tu essayé avec la propriété ..Nom ?

    Du style : PARAMETRES.NomVariable..Nom ?

  3. #3
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Oui,

    En remplacant {PARAMETRES.NomVariable} par {PARAMETRES.NomVariable..Nom} partout, çà plante

    rreur à la ligne 26 du traitement Procédure globale InitialisationVariablesGlobales.
    L'élément 'NomVariable' est inconnu.

    ----- Informations techniques -----

    Projet : Instrument

    Appel WL :
    Traitement de 'Procédure globale InitialisationVariablesGlobales' (InitialisationProgramme.InitialisationVariablesGlobales), ligne 26, thread 0

    Que s'est-il passé ?
    L'élément 'NomVariable' est inconnu.
    La patience est d'or, l'aide est inestimable ...

  4. #4
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : septembre 2008
    Messages : 912
    Points : 482
    Points
    482

    Par défaut

    Et comme ca : {PARAMETRES.NomVariable}..Nom ?

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 554
    Points : 1 171
    Points
    1 171

    Par défaut

    Bonsoir,

    Je n'ai pas consulté vos pièces jointes, mais pour ce qui est de l’indirection, l'aide est très claire et, dans ce cas précis des propriétés sur indirection, il y a des exemples adaptés.

    Voir les notes :
    Quand utiliser l'indirection ?

    L'indirection peut être utilisée par exemple :
    ...
    Pour utiliser une propriété :
    {s_NomChamp}..Hauteur = 10
    De même, dans les remarques, il est précisé :
    Remarques :
    Les opérateurs d'accès sur un élément (opérateurs : et [ ] et [[ ]] et .. ) peuvent être utilisés sur l'élément obtenu par indirection. Quelques exemples :
    { <indirection> } : membre

    { <indirection> } [ indice ]

    { <indirection> } [[ indice ]]

    { <indirection> }..propriété
    J'espère que cela vous sera utile.

    Hemgé

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2009
    Messages : 133
    Points : 277
    Points
    277

    Par défaut

    Bonsoir,

    Qu'entendez-vous par :
    Voilà le résultat qui n'est pas satisfaisant car je n'est pas affecté les valeurs dans mes variables globales ...
    Quand on regarde la capture d'écran de votre trace, le 4ème champ, le contenu de votre variable globale, est systématiquement égal à votre 2ème champ, la valeur définie dans le fichier ! Votre procédure fonctionne donc correctement en l'état !

    Vous devriez pouvoir le vérifier en mettant un STOP à la fin de votre code et en consultant les variables directement dans windev.

  7. #7
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Merci à vous,

    J'ai déjà utilisé l'indirection dans la plupart des cas, mais là le cas est un peu plus complexe...

    x.jpg

    Si l'on regarde le résultat,

    0 <TAB> Vrai,
    le 0 devrait correspondre au nom de la variable (lu dans le fichier PARAMETRES) et vrai sa valeur (lu dans le m^me fichier)



    Imaginons que j'ai dans le fichier PARAMETRES, 2 colonnes :
    NomVariable et ContenuVariable
    GAdminTout .... Vrai
    GafficheTout ... Faux

    J'ai aussi déclaré ces variables en global dans le code projet :
    GAdminTout et GafficheTout sont booleen


    Maintenant, je veux charger les valeurs lues du fichier dans ces variables...
    j'utilise ce code...

    Code :
    {PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
    Le problème est que je ne sais pas syntaxer {PARAMETRES.NomVariable} pour obtenir en final

    GAdminTout = Vrai

    j'obtient en fait ...

    0 = Vrai

    SINON, AUTRE SOLUTION PLUS LOURDE EN CODE et en accès fichier...
    Faire une recherche pour chaque variable de ce fichier... pas TOP

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HLitRecherchePremier(PARAMETRES,NomVariable,"GbAdminTout")
    SI HTrouve()=Vrai ALORS
    	GbAdminTout = PARAMETRES.ContenuVariable
    FIN
    
    HLitRecherchePremier(PARAMETRES,NomVariable,"gnPersonneEncours")
    SI HTrouve()=Vrai ALORS
    	gnPersonneEncours = Val(PARAMETRES.ContenuVariable)
    FIN
    Hors de l'aide fournie, si quelqu'un connait la syntaxe acceptable !
    Merci d'avance
    La patience est d'or, l'aide est inestimable ...

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 554
    Points : 1 171
    Points
    1 171

    Par défaut

    Bonjour,

    Je vous renvoie encore à l'Aide en ligne sur l'indirection.

    Vous y trouvez un exemple exact de ce que vous voulez faire, à savoir construire un nom de variable en associant une chaîne littérale ("PARAMETRES. ") et une variable texte (NomVariable), sauf que dans l'exemple, l'ordre des éléments est inversé.

    // Indirection avec un nom de fichier dans une variable
    nNomFic est une chaîne = "Client"
    {nNomFic + ".Nom"} = "Durand"
    HAjoute({nNomFic})
    Le principe à retenir avec les indirections est que vous construisez (concaténation etc.) votre chaîne résultat comme à l'accoutumée et que vous placez le tout entre accolades {ouvrante , puis fermante}.
    Cet ensemble, accolades comprises, désigne un champ, une variable etc.
    Vous pouvez ensuite appliquer à ce champ, à cette variable les traitements ou propriétés etc que appliqueriez à un champ, variable etc "de base".
    Le .. des propriétés, les [] des indices doivent donc être en dehors des accolades et suivre l'accolade fermante (}), exactement comme ils suivraient le nom d'un champ ou d'une variable "de base".

    Donc, dans votre cas, étant entendu que "PARAMETRES." est une chaîne littérale et NomVariable une variable chaîne qui contient le nom de la variable à affecter,
    {PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
    doit devenir
    {"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable
    Bon week-end

    Hemgé

  9. #9
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Merci Hemgé pour ta réponse,

    Cependant, j'ai déjà fait cet essai et je viens de le refaire...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // Chargement des noms de chaque variable et leur valeur à partir du fichier "PARAMETRES"
    HLitPremier(PARAMETRES,NomVariable)
    TANTQUE PAS HEnDehors(PARAMETRES)
    	
    	Choix est entier = 0
    	SI PARAMETRES.typeVariable = "Numérique" THEN 
    		Choix = 2
    	SINON	SI PARAMETRES.typeVariable = "Texte" THEN 
    		Choix = 3
    	SINON SI PARAMETRES.typeVariable = "Booléen" THEN 
    		Choix = 1
    	SINON
    		Choix = 0
    	FIN
    	
    	// Traitement selon le type de la variable
    	SELON Choix
    		CAS 3	// Texte
    			{"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable
    		CAS 2	// Numérique
    			{"PARAMETRES." + NomVariable} = Val(PARAMETRES.ContenuVariable)
    		CAS 1	// Booléen
    			{"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable="Faux" ? "Faux" SINON "Vrai"
    		AUTRE CAS
    			Info ("Cas non défini") 	
    	FIN
    
     	Trace ({"PARAMETRES." + NomVariable},TAB,PARAMETRES.ContenuVariable)
    		
    	HLitSuivant(PARAMETRES, NomVariable)
    	
    FIN
    le message d'erreur "Identificateur NomVariable inconnu ou inaccessible" s'affiche sur les 4 déclarations {"PARAMETRES." + NomVariable}

    Pas encore çà ! Il faut que je tente d'autres écritures...
    La patience est d'or, l'aide est inestimable ...

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2009
    Messages : 133
    Points : 277
    Points
    277

    Par défaut

    Bonjour,

    Comme indiqué par Hemgé :

    Citation Envoyé par Hemgé Voir le message
    Bonjour,

    ...

    Donc, dans votre cas, étant entendu que "PARAMETRES." est une chaîne littérale et NomVariable une variable chaîne qui contient le nom de la variable à affecter
    Il manque quelque part dans votre code :

    Code :
    NomVariable est une chaîne = ....
    Mais encore une fois, votre code fonctionnait déjà :

    {PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
    Dans le cas de votre première ligne dans votre base de donnée, ce code va bien affecter la valeur "G:\CHAMPION...." dans la variable "gsCheminPdf"

    Si ce n'est pas votre but alors je ne comprends pas ce que vous voulez faire !

  11. #11
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Bien, il me semble effectivement qu'il y a incompréhension...

    Je reprends pour expliquer mon souhait !


    Dans un concept général, je déclarerai "2 pour simplifier" variables globales dans mon code projet (gbToutAdmin et gbToutAffiche) et leur affecterai une valeur à l'initialisation (Vrai par exemple).

    Code :
    1
    2
    3
    // Déclaration des variables globales utiles au lancement du programme
    gbAdminTout est un booléen = vrai
    gbAfficheTout est un booléen = vrai
    C'est valeurs sont figées à chaque lancement de programme... Si je veux tenir compte d'une évolution à la fermeture et ensuite à la réouverture (GbAdminTout = Faux par exemple), je vais enregistrer le changement de ces variables dans un fichier, pour ensuite les relire au nouveau lancement de programme avec ce code. Ca FONCTIONNE très bien

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HLitRecherchePremier(PARAMETRES,NomVariable,"gbAdminTout")
    SI HTrouve()=Vrai ALORS
    	gbAdminTout = PARAMETRES.ContenuVariable="Faux" ? Faux SINON Vrai
    FIN
    
    HLitRecherchePremier(PARAMETRES,NomVariable,"gbAfficheTout")
    SI HTrouve()=Vrai ALORS
    	gbAfficheTout = PARAMETRES.ContenuVariable="Faux" ? Faux SINON Vrai
    FIN
    Par contre, si j'ai 1000 paramètres à lire, je vais devoir faire 1000 recherche puis chargement ce qui me parait être non optimum...



    Dans un concept plus libérale, je déclare ces mêmes variables globales dans mon code projet mais au lancement du programme je vais aller lire le contenu de la colonne "nom de variable" du fichier PARAMETRES et y affecter le contenu de la colonne "valeur de la variable" correspondant du fichier PARAMETRES .
    RAPPEL, tous les noms de variables de la colonne "nom de variable" sont déclarés en global, dans le code projet bien sûr.

    VOILA... la redirection nécessite de réaliser 2 choses :

    1°) lire le nom de la variable dans la colonne 1
    2°) lire le contenu de la variable à lui affecter dans la colonne 2



    //Déclaration code projet
    gbAfficheTout, gbToutAdmin est booleen

    //Je lis les 2 colonnes de mon fichier PARAMETRES
    NomDeVariable .... ContenuDeVariable
    gbAfficheTout .... Vrai
    gbToutAdmin .... Vrai

    // Le résultat dans mes variables globales devrait être :
    gbAfficheTout = Vrai
    gbToutAdmin = Vrai

    // Actuellement, le résultat est :
    0 .... Vrai
    0 .... Vrai

    C'est probablement un problème dans la syntaxe des indirections...
    La patience est d'or, l'aide est inestimable ...

  12. #12
    Expert Confirmé Sénior
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    2 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 2 234
    Points : 4 039
    Points
    4 039

    Par défaut

    Bonjour,
    Pourquoi ne pas remplacer les variables globales par un tableau associatif ?

    Ainsi plus de problème d'indirection...

    Tatayo.

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2009
    Messages : 133
    Points : 277
    Points
    277

    Par défaut

    A priori votre problème ne porte que sur les booléens, et en relisant votre code je constate que pour définir la valeur des booleén vous utilisez une chaine :

    Code :
    {"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable="Faux" ? "Faux" SINON "Vrai"
    L'évaluation d'une chaîne vous renverra systématiquement faux, retirez simplement les " :

    Code :
    {"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable="Faux" ? Faux SINON Vrai

  14. #14
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 554
    Points : 1 171
    Points
    1 171

    Par défaut

    Bonjour et bonne année !

    Comme le soulignait themayu :

    Mais encore une fois, votre code fonctionnait déjà :

    Citation:
    {PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
    Dans le cas de votre première ligne dans votre base de donnée, ce code va bien affecter la valeur "G:\CHAMPION...." dans la variable "gsCheminPdf"
    Effectivement, le résultat sur Trace semblait correct.

    J'avais signalé ne pas avoir consulté vos pièces jointes dans mon premier post.
    A leur lecture, il apparaît que NomVariable est une rubrique de votre fichier PARAMETRES et il n'y a donc pas lieu de définir une variable NomVariable comme évoqué. Désolé.
    Normalement l'indirection {PARAMETRES.NomVariable} est correcte puisque NomVariable est à l'évidence une rubrique de type chaîne. (l'expression entre accolades doit être une chaîne).


    Par ailleurs, il faut élaguer votre code qui est beaucoup trop indirect et compliqué :
    - l'affectation Choix est entier = 0 doit venir juste après la déclaration d'ouverture de votre routine et pas être répétée à chaque boucle;
    - dans la boucle, Choix est entier = 0 doit devenir Choix est entier = 0
    - mais, in fine, il est inutile de passer par Choix et vous pouvez tester d'emblée PARAMETRES.typeVariable dans une instruction Selon/Cas
    - les si imbriqués que vous avez utilisés auraient pu être avantageusement remplacés par une instruction Selon/Cas, mais cette partie est inutile comme écrit juste au-dessus.
    - en fin de cette série de Si, il ne fallait plus remettre Choix à 0, puisque vous le mettiez à 0 avant d'entrer dans vos tests et que par défaut, sauf si une condition était rencontrée et le modifiait (1 à 3), il restait à 0, sa valeur initiale, attribuée avant d'entrer dans les tests.
    - enfin, dans l'Indirection, il est conseillé de spécifier le type de l'élément en utilisant les constantes indXXX. Voir l'aide.

    Le code ci-après est plus concis et plus clair.
    Il s'exécutera plus vite.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // Chargement des noms de chaque variable et leur valeur à partir du fichier "PARAMETRES"
    
    HLitPremier(PARAMETRES,NomVariable)
    
    TANTQUE PAS HEnDehors(PARAMETRES)	
    	
    	// Traitement selon le type de la variable
    	SELON PARAMETRES.typeVariable
    		CAS "Texte"	
    			{PARAMETRES.NomVariable, IndVariable} = PARAMETRES.ContenuVariable
    		CAS "Numérique" 
    			{PARAMETRES.NomVariable, IndVariable} = Val(PARAMETRES.ContenuVariable)
    		CAS "Booléen" 
    			{PARAMETRES.NomVariable, IndVariable} = PARAMETRES.ContenuVariable="Faux" ? "Faux" SINON "Vrai"
    			{PARAMETRES.NomVariable, IndVariable} = PARAMETRES.ContenuVariable="Faux" ? Faux SINON Vrai //EDIT : selon la remarque de themayu
    
    		AUTRE CAS
    			Info ("Cas non défini") 	
    	FIN
    
     	Trace ({PARAMETRES.NomVariable, IndVariable},TAB,PARAMETRES.ContenuVariable)
    		
    	HLitSuivant(PARAMETRES, NomVariable)
    	
    FIN
    Je pense que cela devrait fonctionner comme souhaité.

    Hemgé

    PS : je vois à l'instant que vous avez posté un nouveau message.
    J'éditerai celui-ci si nécessaire.

  15. #15
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Merci à vous,

    Après simplification et correction apportée sur la condition "False" qui me servait de test et donc ne marchait pas, le chargement du contenu et l'affectation respective à chacune des variables globales s'effectue correctement maintenant.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // Initialisation des variables globales déclarées dans le code du projet
    PROCEDURE InitialisationVariablesGlobales()
    
    sNomVariableLuFichier est un chaîne
    
    // Chargement des noms de chaques variables globales (déclarées préalablement) ainsi que leur valeur respective à partir du fichier "PARAMETRES"
    HLitPremier(PARAMETRES,NomVariable)
    TANTQUE PAS HEnDehors(PARAMETRES)
    	
    	sNomVariableLuFichier = PARAMETRES.NomVariable
    	
    	// Traitement selon le type de la variable
    	SELON PARAMETRES.typeVariable
    		
    		CAS "Texte"
    			{sNomVariableLuFichier} = PARAMETRES.ContenuVariable
    		
    		CAS "Numérique"
    			{sNomVariableLuFichier} = Val(PARAMETRES.ContenuVariable)
    		
    		CAS "Booléen"
    			{sNomVariableLuFichier} = PARAMETRES.ContenuVariable="Faux" ? Faux SINON Vrai
    			
    		AUTRE CAS
    			Info ("Cas non défini") 	
    	FIN
    
     	Trace ({sNomVariableLuFichier},TAB,PARAMETRES.ContenuVariable)
    		
    	HLitSuivant(PARAMETRES, NomVariable)
    	
    FIN
    Une question complémentaire, dans Trace...

    Trace ({sNomVariableLuFichier}, m'affiche le contenu de la variable et pas le nom de la variable lui même. Quelle est la syntaxe ?

    Trace ({sNomVariableLuFichier}.nom, ou autre ....
    La patience est d'or, l'aide est inestimable ...

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2009
    Messages : 133
    Points : 277
    Points
    277

    Par défaut

    Tout simplement sans les accolades :

    Code :
    Trace(sNomVariableLuFichier)

  17. #17
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Plus bêta ... y a pas !
    La brume alcoolisée des fêtes va se dissiper ... je l'espère.

    Merci encore à tous,
    La patience est d'or, l'aide est inestimable ...

  18. #18
    Membre Expert
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 554
    Points : 1 171
    Points
    1 171

    Par défaut

    Bonjour,

    Ravi que cela fonctionne.

    Code :
    1
    2
    3
    4
    5
    6
    7
    	sNomVariableLuFichier = PARAMETRES.NomVariable
    	
    	// Traitement selon le type de la variable
    	SELON PARAMETRES.typeVariable
    		
    		CAS "Texte"
    			{sNomVariableLuFichier} = PARAMETRES.ContenuVariable
    Avez-vous essayé avec PARAMETRES.NomVariable comme je vous l'avais suggéré ?
    D'une part, ce serait intéressant de connaître le fond de l'histoire.
    D'autre part et surtout, l'utilisation de sNomVariableLuFichier me semble superflue et inutile.
    Vous utilisez les rubriques typeVariable et ContenuVariable en direct, pourquoi pas la rubrique NomVariable ?


    Enfin, toujours dans l'idée d'optimiser votre code, vous n'utilisez pas la constante indXXX spécifiant le type d'élément recherché (indRubrique en l’occurrence), comme suggéré.
    Voir l'aide sur l'indirection, au point Indirection en spécifiant le type de l'élément (optimise la vitesse d'exécution)
    Ceci permet à Windev de connaître la collection dans laquelle il doit chercher l'élément sur lequel vous travaillez, au lieu de parcourir systématiquement toutes ses collections d'identifiants.

    Hemgé

  19. #19
    Membre régulier Avatar de GCASPIC10
    Inscrit en
    mars 2010
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : mars 2010
    Messages : 184
    Points : 76
    Points
    76

    Par défaut

    Excuses Hemgé, j'étais passé sur un autre problème...

    Avez-vous essayé avec PARAMETRES.NomVariable comme je vous l'avais suggéré ?
    D'une part, ce serait intéressant de connaître le fond de l'histoire.
    D'autre part et surtout, l'utilisation de sNomVariableLuFichier me semble superflue et inutile.
    Vous utilisez les rubriques typeVariable et ContenuVariable en direct, pourquoi pas la rubrique NomVariable ?
    sNomVariableLuFichier était plus pour la lisibilité et donc transitoire afin de m'éviter de modifier à chaque fois 3 ou 4 chaines dans le programme. Je l'ai donc modifié dans mon programme comme conseillé... merci


    Enfin, toujours dans l'idée d'optimiser votre code, vous n'utilisez pas la constante indXXX spécifiant le type d'élément recherché (indRubrique en l’occurrence), comme suggéré.
    Voir l'aide sur l'indirection, au point Indirection en spécifiant le type de l'élément (optimise la vitesse d'exécution)
    Ceci permet à Windev de connaître la collection dans laquelle il doit chercher l'élément sur lequel vous travaillez, au lieu de parcourir systématiquement toutes ses collections d'identifiants.
    Je n'ai pas bien compris l'intérêt de indxxx dans mon cas, il faut que je regarde à quoi celà correspond en effet.

    A suivre, merci pour tes conseils
    La patience est d'or, l'aide est inestimable ...

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •