Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 18h49   #1
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 19h37   #2
WDKyle
Membre éclairé
 
Avatar de WDKyle
 
Homme
Inscription : septembre 2008
Messages : 594
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : septembre 2008
Messages : 594
Points : 326
Points : 326
Bonsoir,

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

Du style : PARAMETRES.NomVariable..Nom ?
WDKyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 20h00   #3
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
Oui,

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

Citation:
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 21h13   #4
WDKyle
Membre éclairé
 
Avatar de WDKyle
 
Homme
Inscription : septembre 2008
Messages : 594
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : septembre 2008
Messages : 594
Points : 326
Points : 326
Et comme ca : {PARAMETRES.NomVariable}..Nom ?
WDKyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 22h44   #5
Hemgé
Membre chevronné
 
Homme
Inscription : octobre 2007
Messages : 320
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 320
Points : 749
Points : 749
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 :
Citation:
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é :
Citation:
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é
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 23h09   #6
themayu
Membre confirmé
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : mars 2009
Messages : 92
Points : 231
Points : 231
Bonsoir,

Qu'entendez-vous par :
Citation:
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.
themayu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 13h44   #7
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 14h48   #8
Hemgé
Membre chevronné
 
Homme
Inscription : octobre 2007
Messages : 320
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 320
Points : 749
Points : 749
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é.

Citation:
// 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,
Citation:
{PARAMETRES.NomVariable} = PARAMETRES.ContenuVariable
doit devenir
Citation:
{"PARAMETRES." + NomVariable} = PARAMETRES.ContenuVariable
Bon week-end

Hemgé
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 13h15   #9
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 13h45   #10
themayu
Membre confirmé
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : mars 2009
Messages : 92
Points : 231
Points : 231
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à :

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"

Si ce n'est pas votre but alors je ne comprends pas ce que vous voulez faire !
themayu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h07   #11
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h57   #12
tatayo
Expert Confirmé
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 573
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 573
Points : 3 164
Points : 3 164
Bonjour,
Pourquoi ne pas remplacer les variables globales par un tableau associatif ?

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

Tatayo.
tatayo est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 16h59   #13
themayu
Membre confirmé
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : mars 2009
Messages : 92
Points : 231
Points : 231
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
themayu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 17h02   #14
Hemgé
Membre chevronné
 
Homme
Inscription : octobre 2007
Messages : 320
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 320
Points : 749
Points : 749
Bonjour et bonne année !

Comme le soulignait themayu :

Citation:
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.
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 18h01   #15
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 18h13   #16
themayu
Membre confirmé
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : mars 2009
Messages : 92
Points : 231
Points : 231
Tout simplement sans les accolades :

Code :
Trace(sNomVariableLuFichier)
themayu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 10h28   #17
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 10h40   #18
Hemgé
Membre chevronné
 
Homme
Inscription : octobre 2007
Messages : 320
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 320
Points : 749
Points : 749
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é
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 18h25   #19
GCASPIC10
Membre du Club
 
Avatar de GCASPIC10
 
Inscription : mars 2010
Messages : 146
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : mars 2010
Messages : 146
Points : 66
Points : 66
Envoyer un message via Skype™ à GCASPIC10
Excuses Hemgé, j'étais passé sur un autre problème...

Citation:
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


Citation:
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 ...
GCASPIC10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web