Page 1 sur 1
[..] Petit script de fichier texte
Posté : ven. 26 août 2011 16:08
par ethneldryt
Bonjour, comme je suis pas douer pour expliquer je donne des exemples de ce que je recherche:
Un exemple que contient le fichier texte (attention, a la fin du fichier texte il y a une ligne vide, donc un retour a la ligne apres "base2;largeur;pierre;3":
► Afficher le textedata.txt
base1;objet;5
base1;taille;10
base1;largeur;droite;30
base2;objet;cuite
base2;taille;crue
base2;largeur;pierre;3
Dans la gui on a un combo, dans le combo déroulant on doit avoir "base1 et base2, toto1, toto2... ect"
On doit compter ce qu'il y a avant le premier point virgule et le sortir en unique.
Si on choisit base1 ca devrai donner ca :
$objet = 5
$taille = 10
$largeur = droite
$largeur_qt = 30
ensuite si dans la liste du combo on prend base2 :
$objet = cuite
$taille = crue
$largeur = pierre
$largeur_qt = 3
Voila en gros ce que j'aimerai, si vous ne comprenez pas, je pourrais faire un dessin explicatif

Merci a vous.
ps: j'ai fais un peux de recherche, j'ai tenter avec des StringSplit par exemple, mais je ne comprend pas, je n'arrive pas a voir comment faire ca

Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 16:32
par mikell
Ben là franchement tu te compliques la vie
Avec un fichier .ini c'est facile :
► Afficher le texte
[base1]
objet=5
taille=10
largeur=droite
largeur_qt=30
[base2]
objet=cuite
taille=crue
largeur=pierre
largeur_qt=3
et le code de test :
► Afficher le texte
Code : Tout sélectionner
Global $text
$item = GUICtrlRead($combo) ; [color=#008000]<= par exemple, "base1"[/color]
$data = IniReadSection("monfichierini.ini", $combo) ; [color=#008000]<= lit le ini, section "base1"[/color]
For $i = 1 To $data[0][0]
$text &= [color=#0040FF]$data[$i][0] & " = " & $data[$i][1][/color] & @CRLF ; [color=#008000]<= affiche les infos "objet = 5", etc[/color]
Next
MsgBox(0,"", $text) ; <= [color=#008000]aussi bien, écrire $text dans une edit[/color]
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 16:33
par ethneldryt
Non, il ne faut pas utiliser le fichier ini justement.
Je vais créer une GUI pour un plugin d'un jeu, a fin de pouvoir éditer la configuration plus facilement.
Donc on doit respecter le fichier texte que j'ai mis, je ne peux pas recoder tout le serveur :p
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 16:52
par mikell
Bon ben alors ça
► Afficher le texte
Code : Tout sélectionner
#Include <File.au3>
Global $text
$item = GUICtrlRead($combo)
$nblines = _FileCountLines("data.txt")
For $i = 1 to $nblines
$data = StringSplit(FileReadLine("data.txt", $i), ";")
If $data[1] = $item Then
$text &= $data[2] & " = " & $data[3] & @CRLF
If $data[0] = 4 Then $text &= $data[2] & "_qt = " & $data[4] & @CRLF
EndIf
Next
MsgBox(0,"", $text)
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 17:09
par ethneldryt
merci, c'est presque ca, je ne cherche pas a afficher les valeurs, mais a les enregistrer dans une variable.
$objet
$taille
$largeur
$largeur_qt
ensuite, pour le combo, je ne sais pas comment faire pour extraire "base1 et base2"
par exemple :
GUICtrlCreateCombo("Choisir",10,10,100,20)
GUICtrlSetData(-1,$combo)
dans $combo, il y aurais "base1|base2"|...."
Merci
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 17:17
par sksbir
Bonjour
Si tu veux assigner des variables, tu dois utiliser assign, mais le soucis , c'est que tu dois préalablement déclarer toutes les variables potentiellement assignables pour pouvoir les utiliser plus loin.
Voici un exemple de script opérationnel:
► Afficher le texte
Code : Tout sélectionner
$OBJET=""
$TAILLE=""
$LARGEUR=""
$LARGEUR_QT=""
$NOM_FIC=FileOpenDialog("Fichier Param à lire",@ScriptDir,"fichier parametre (*.txt)")
If $NOM_FIC="" Then Exit
If Not(FileExists($NOM_FIC)) Then Exit
$MOTCLE=InputBox("Selection","Saisir le sélecteur:","Base..")
If $MOTCLE="" Then Exit
$DESC_FIC=FileOpen($NOM_FIC,0)
If $DESC_FIC=-1 Then
MsgBox(16,"Erreur","Impossible d'ouvrir " & $NOM_FIC & " en lecture")
Exit 8
EndIf
While 1
$LIGNE=FileReadLine($DESC_FIC)
If @error = -1 Then ExitLoop
$SEGMENT=StringSplit($LIGNE,";")
If ($SEGMENT[0]<>3) And ($SEGMENT[0]<>4) Then ContinueLoop
If $SEGMENT[1]<>$MOTCLE Then ContinueLoop
Assign($SEGMENT[2],$SEGMENT[3],2)
If $SEGMENT[0]=4 Then
Assign($SEGMENT[2] & "_qt",$SEGMENT[4],2)
EndIf
WEnd
MsgBox(0,"test","Maintenant, on va tester ce qu'on a dans nos variables:" & @CRLF & _
"$OBJET=" & $OBJET & @CRLF & _
"$TAILLE=" & $TAILLE & @CRLF & _
"$LARGEUR=" & $LARGEUR & @CRLF & _
"$LARGEUR_QT=" & $LARGEUR_QT )
[EDIT] A la lumière de ta derniere remarque, tu n'as pas besoin d'utiliser Assign...
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 17:29
par ethneldryt
Bonsoir,
La dans ton script on doit manuellement entrer base1,base2 ect..
ce que je voudrai c'est 'automatiser' ca, c'est a dire attribuer a une var, $combo = "base1|base2|totox|abcd"....
Re: [..] Petit script de fichier texte
Posté : ven. 26 août 2011 17:45
par mikell
ce que je voudrai c'est 'automatiser' ca, c'est a dire attribuer a une var, $combo = "base1|base2|totox|abcd"....
Base-toi sur mon script et le StringSplit sur data.txt :
Code : Tout sélectionner
$combo = GUICtrlCreateCombo("Choisir",10,10,100,20)
$nblines = _FileCountLines("data.txt")
$old = ""
For $i = 1 to $nblines
$data = StringSplit(FileReadLine("data.txt", $i), ";")
If $data[1]<>$old Then GUICtrlSetData($combo, $data[1] & "|")
$old = $data[1] ; [color=#008000]<= pour éviter d'avoir "base1" écrit 3 fois[/color]
EndIf
Next