Page 1 sur 2
[..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 08:42
par BeCool
Bonjour a tous.
Ma question va paraitre toute bête, mais je n'arrive pas a écrire tout le contenu d'un .ini dans un GUICtrlCreateList ... (il me prend que la première ligne)
Il faut aussi savoir que le contenu du .ini peut augmenter.
En fait je fais un programme ou il y a un suivi de client, et a chaques fois qu'il y a quelque chose de fait sur ce client, on ajoute ce qui et fait, et j'aimerais afficher tout l'historique de ce suivi dans un GUICtrlCreateList.
Quelqu'un peut m'aider svp ?
P.S: Je fais ca dans un .ini pour des raisons de facilité, mais si il le faut absolument, je peux remplacer le .ini par un .txt, sachant que ces fichiers pourront faire rapidement 1, 5, voir 10 mo ...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 11:56
par Tlem
En ce qui concerne votre demande, je pense que le fichier .ini n'est pas forcément ce qu'il y à de mieux puisque celui-ci à une limite de 64Ko pour certaines fonctions.
Ensuite pour le
GUICtrlCreateList, il vous faut rajouter les informations ligne par ligne. Regardez dans la doc, l'exemple fournit pour ajouter les événement.

Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 13:06
par BeCool
Pour ce qui est de la limite, je sais, mais je penses que ca me conviendra largement étant donné que je veux juste écrire et lire du texte dedans.
En suite, j'ai pensé a ce que vous me dites par rapport au fait qu'il faille rajouter les infos ligne par ligne, mais ca ne me va pas étant donné qu'il faut que ma GUICtrlCreatList puisse lire le fichier ini qu'il y ait une ligne, comme 100 ...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 13:31
par Tlem
Et bien un fichier texte tout simple fera aussi bien l'affaire.

Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 13:36
par BeCool
Oui, mais encore faut il que je connaisse la fonction pour afficher TOUT le texte dans ma fenêtre.

Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 14:10
par Tlem
Tout dépend de comment vous comptez régler le problème.
Soit vous lisez l'intégralité du fichier à chaque mise à jour et vous re-copiez le tout dans la liste, soit vous tenez compte du nombre de lignes déjà affichées et vous ne récupérez que les lignes manquantes ...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 06 nov. 2009 16:49
par BeCool
Il y aura plusieurs fichier.ini ou .txt qui auront tous un nombre de ligne différent, donc ce que je veux, c'est juste pouvoir afficher dans une fenêtre le contenu de mes fichiers .txt ou .ini.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 07 nov. 2009 01:03
par Tlem
Vu que vous ne donnez pas franchement beaucoup de détails sur ce dont vous avez besoin, voici ce que je peut vous donner pour l'instant :
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
Global $line, $add, $clear, $mylist, $close, $msg
$file = FileOpen(@WindowsDir & "\win.ini", 0)
While 1
$line &= FileReadLine($file) & '|'
If @error = -1 Then ExitLoop
WEnd
FileClose($file)
GUICreate("My GUI list") ; will create a dialog box that when displayed is centered
$add = GUICtrlCreateButton("Ajout", 20, 350, 75, 25)
$mylist = GUICtrlCreateList("", 20, 20, 320, 330, BitOR($WS_VSCROLL, $WS_BORDER))
GUICtrlSetData(-1, "Ceci est la ligne 1|Ceci est la ligne 2 + une ligne vide||")
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $add
GUICtrlSetData($mylist, $line)
EndSelect
WEnd
A vous de comprendre et d'adapter à votre besoin.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : ven. 11 déc. 2009 20:48
par BeCool
Je viens de me re-pencher sur le sujet et avec le recul, j'ai directement compris. Merci

Mais il ne m'affiche que les sections, or, j'aimerais qu'il me lise plutôt les "keys" et là je plante.
J'ai cherché, mais a aucun endroit on définit ce qu'il doit lire. Donc je ne trouve pas ce qu'il faut ajouter/changer pour qu'il me lise mes "keys"...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 12 déc. 2009 11:45
par Tlem
L'exemple que je vous ai donné ne lit pas que les sections, mais la totalité du fichier.
Si vous voulez lire les clés d'un fichier .Ini, utilisez les fonctions associées telle que
IniReadSection(),
IniRead(), etc ...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 12 déc. 2009 14:41
par BeCool
Je me disais bien aussi !
J'avais déjà pensé au IniReadSection(), etc, mais je n'y était pas arrivé. Peut être qu'avec un peut de recul j'y arriverais. Je regarde ça tout a l'heure si j'ai le temps, au pire demain
Merci Tlem
Edit : Je viens d'arriver a lire une "keys" mais il ne veut en lire qu'une ... Il ne veut pas lire les "Keys" qu'il y a dessous... Pourtant j'ai bien mis :
...
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 12 déc. 2009 15:48
par Tlem
Je ne sais pas comment est fait votre fichier.ini donc je ne peut vous aider plus.
Par contre je peut vous mettre sur la voie :
IniReadSectionNames("Fic.ini") => Va lire le nom de toutes les sections d'un fichier .ini et vous retourner un tableau.
Ensuite avec ce tableau de noms, vous pouvez utiliser la fonction IniReadSection("Fic.ini", "section") pour lire la totalité des clés d'une section.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 12 déc. 2009 19:03
par BeCool
Mon fichier ini est tout bête. Il est comme ceci :
Code : Tout sélectionner
[Suivi]
kafz^ùkPZFK¨kzfpkZKPFkz^fk¨ZPKFPQzkf
= fggggggggggggggg
= aaaaaaaaaaaaaa
= szgsrhgzqaefrk
sa|
Bon bien sur c'est un fichier ini de test hein
Donc si j'ai bien compris ce que vous me dites, ca donnerais quelque chose comme ci dessous :
Code : Tout sélectionner
$readsection = IniReadSectionNames("C:\chemin\Nom.ini")
$blabla = IniReadSection ("" & $readsection, "Suivi")
GuiCtrlSetData ($ancien, $blabla)
?
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : sam. 12 déc. 2009 21:01
par Tlem
Votre fichier n'est pas dans le format .INI.
Un fichier au format .ini doit se présenter comme ceci :
Code : Tout sélectionner
[Section1]
Cle1 = Val1
Cle2 = Val2
Cle3 = Val3
[Section2]
Cle#1 = Val#1
Cle##2 = Val#2
Clexx3 = Valeur 3
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : dim. 13 déc. 2009 20:26
par BeCool
Je sais bien. Mais étant donné que les clés n'ont pas de nom, ceci explique cela.
Pour ce qui est des lignes sans "=", c'était juste pour faire un test. C'est déjà modifié.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : lun. 14 déc. 2009 00:24
par Tlem
Si vous n'avez pas de clés, alors vous ne pouvez pas utiliser le fichier comme un fichier .ini et donc les fonctions associées.
Vous devez dans ce cas créer votre propre parseur de données.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : lun. 14 déc. 2009 18:09
par BeCool
Alors je vais utilisé des clés ^^
Sinon, mon exemple était bon ?
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : lun. 14 déc. 2009 21:53
par Tlem
Non, car IniReadSectionNames() et IniReadSection() renvoient un tableau et non une variable.
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : mer. 16 déc. 2009 19:24
par BeCool
Autant pour moi.
Je suis arrivé a faire afficher tout mon .ini, sauf qu'il m'affiche aussi les clés et les noms de section, et il me met tout sur la même ligne ... Je ne comprend pas pourquoi, je penses avoir fais comme dans votre exemple :
Code : Tout sélectionner
Case $bouton_suivi_cl
Global $line
$filee = "C:\Lor des sens\Fiche Client\Suivi Client\_" & GuictrlRead($input_rech_fc_cl) & ".ini"
$fileee = FileOpen($filee, 0)
$line &= FileRead($filee)& '|'
$suivi_cl = GUICreate("- L'or des sens - Suivi client(e) -", 434, 350, 391, 158)
$bouton_suivi_cl_annuler = GUICtrlCreateButton("Annuler", 302, 312, 124, 30, $BS_FLAT)
$bouton_suivi_cl_save = GUICtrlCreateButton("Sauvegarder", 8, 312, 124, 30, $BS_FLAT)
$listbox_suivi_cl = GUICtrlCreateList("", 8, 8, 417, 266, BitOR($WS_VSCROLL, $WS_BORDER))
; & IniReadSection("" & $filee, ""
$input_suivi_cl = GUICtrlCreateInput("", 8, 280, 417, 21)
GUICtrlSetData($listbox_suivi_cl, $line)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bouton_suivi_cl_annuler
GUISetState(@SW_HIDE)
_fiche_client()
Case $bouton_suivi_cl_save
FileWriteLine($filee, GUICtrlRead($input_suivi_cl) & '|')
EndSwitch
WEnd
Re: [..] Ecrire dans un GUICtrlCreateList
Posté : mer. 16 déc. 2009 23:03
par Tlem
Je ne vois pas comment vous aider plus alors que je ne connais pas la structure de votre fichier.
