PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → simplifier des déclarations
simplifier des déclarations
Débuté par Marie, 23 juil. 2021 20:31 - 11 réponses
Posté le 23 juillet 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
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 26 juillet 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
Membre enregistré
352 messages
Popularité : +12 (18 votes)
Posté le 26 juillet 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
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 26 juillet 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
Posté le 26 juillet 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
Membre enregistré
352 messages
Popularité : +12 (18 votes)
Posté le 27 juillet 2021 - 08:29
Bonjour,
On ne peut pas déclarer des variables par indirection.
Peut être qu'utiliser un tableau de chaines pourrait convenir?
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 27 juillet 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
Membre enregistré
287 messages
Popularité : +51 (79 votes)
Posté le 09 août 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
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 10 août 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
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 25 août 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
Membre enregistré
287 messages
Popularité : +51 (79 votes)
Posté le 25 août 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
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 25 août 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