PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → simplifier des déclarations
simplifier des déclarations
Iniciado por Marie, 23,jul. 2021 20:31 - 11 respuestas
Publicado el 23,julio 2021 - 20:31
Bonjour à vous,

Je débute sous windev, j'ai toute une série des variables à déclarer, et je me demande s'il ne serait pas possible de simplifier les choses, mais mes tentatives restent veines.
Voilà le principe de ce que j'ai :

sTel1 est une chaîne=INILit("MK","tel1","",ficini)
sTel2 est une chaîne=INILit("MK","tel2","",ficini)
sTel3 est une chaîne=INILit("MK","tel3","",ficini)
sTel4 est une chaîne=INILit("MK","tel4","",ficini)
sTel5 est une chaîne=INILit("MK","tel5","",ficini)
sTel6 est une chaîne=INILit("MK","tel6","",ficini)
sTel7 est une chaîne=INILit("MK","tel7","",ficini)
sTel8 est une chaîne=INILit("MK","tel8","",ficini)


j'ai essayé de simplifier par quelque chose comme ça, mais ça coince:

POUR i = 1 A 8
sTel([i]] est une chaîne = INILit("MK","tel"+[i],"",ficini)
FIN



j'ai aussi essayé ça, mais sans plus de succès:
sTel1,sTel2,sTel3,sTel4,sTel5,sTel6,sTel7,sTel8 sont des chaînes

POUR i = 1 A 8
sTel[i] = INILit("MK","tel"+[i],"",ficini)
FIN




Est-ce qu'il y a une façon plus élégante que la première pour faire des déclarations en nombre ?

Merci pour votre aide
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 26,julio 2021 - 09:06
Bonjour,

Il faut utiliser les indirections :
sTel1,sTel2,sTel3,sTel4,sTel5,sTel6,sTel7,sTel8 sont des chaînes

POUR i = 1 À 8
{"sTel[%i%]",indVariable} = INILit("MK","tel[%i%]","",ficini)
FIN


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube
Miembro registrado
352 mensajes
Popularité : +12 (18 votes)
Publicado el 26,julio 2021 - 09:11
Bonjour.
De mémoire, la syntaxe "tel[%i%]" a été introduite en version 23, si Marie est en version inférieure, cette syntaxe devra être remplacée par "tel"+i
Miembro registrado
3.845 mensajes
Popularité : +227 (347 votes)
Publicado el 26,julio 2021 - 11:03
Bonjour,
Une autre solution est de passer par un tableau (éventuellement associatif,) qui permet de s'abstraire du nombre de n°.

Un truc du style :
saValClé est chaîne
saResLecture est chaîne
tabNoTel est tableau de * par 2 chaînes

saValClé=tel1

saResLecture=INILit("MK",saValClé,"FINI",ficini)
TANTQUE saResLecture<>"FINI"
TableauAjouteLigne(taNoTel,saValClé,saResLecture)
ChaîneIncrémente(saValClé)
saResLecture=INILit("MK",saValClé,"FINI",ficini)
FIN


--
Il y a peut être plus simple, mais, ça tourne
Publicado el 26,julio 2021 - 16:59
Bonjour à vous, et merci pour vos conseils avisés,

Effectivement je suis en version 21, ça fonctionne comme ceci:

sTel1,sTel2,sTel3,sTel4,sTel5,sTel6,sTel7,sTel8 sont des chaîne

POUR i=1 A 8
{"sTel"+i}=INILit("MSK","tel"+[i],"",ficini)
FIN


J'aurais aimé faire quelque chose comme ça mais ça ne fonctionne pas:

POUR i=1 A 8
{"sTel"+i} est une chaîne
{"sTel"+i}=INILit("MSK","tel"+[i],"",ficini)
FIN


Quoi qu'il en soit, c'est déjà beaucoup plus joli de cette manière.
Merci bien.
Marie
Miembro registrado
352 mensajes
Popularité : +12 (18 votes)
Publicado el 27,julio 2021 - 08:29
Bonjour,
On ne peut pas déclarer des variables par indirection.
Peut être qu'utiliser un tableau de chaines pourrait convenir?
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 27,julio 2021 - 09:01
une autre astuce est de passer par la création d'une variable champ.
saValClé est une chaîne="sTel1"


POUR i = 1 À 8
ChampCrée(saValClé,typTexte)
{saValClé,indChamp} = INILit("MSK",saValClé,"",ficini)
SAI_Texte1+={saValClé,indChamp}
saValClé=ChaîneIncrémente(saValClé)
FIN


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube
Miembro registrado
287 mensajes
Popularité : +51 (79 votes)
Publicado el 09,agosto 2021 - 17:13
THIERRY TILLIER a écrit :
une autre astuce est de passer par la création d'une variable champ.
saValClé est une chaîne="sTel1"


POUR i = 1 À 8
ChampCrée(saValClé,typTexte)
{saValClé,indChamp} = INILit("MSK",saValClé,"",ficini)
SAI_Texte1+={saValClé,indChamp}
saValClé=ChaîneIncrémente(saValClé)
FIN


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube



Code totalement illisible, manque d'intuitivité.

--
667, EKIP EKIP
Miembro registrado
2.566 mensajes
Popularité : +222 (260 votes)
Publicado el 10,agosto 2021 - 08:59
Pour moi le plus simple aurait été d'utiliser soit un tableau de chaines soit un tableau associatif de chaines.

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 25,agosto 2021 - 17:51
MBAPPE MBAPPE / Papa a écrit :
Code totalement illisible, manque d'intuitivité.


Le ration Code lisible / code synthétique est à la seule appréciation du développeur en regard de son projet, pas du votre.
Merci de votre participation.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube
Miembro registrado
287 mensajes
Popularité : +51 (79 votes)
Publicado el 25,agosto 2021 - 17:55
THIERRY TILLIER a écrit :
> Le ration Code lisible / code synthétique est à la seule appréciation du développeur en regard de son projet, pas du votre.


Ration ??? :( Je comprend pas

--
667, EKIP EKIP
Miembro registrado
1.143 mensajes
Popularité : +50 (142 votes)
Publicado el 25,agosto 2021 - 18:29
*ratio (désolé) : Plus on synthétise moins c'est lisible

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube