IniReadSection sur une seule dimension

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
littlechiki
Niveau 3
Niveau 3
Messages : 48
Enregistré le : sam. 13 avr. 2019 13:58
Status : Hors ligne

IniReadSection sur une seule dimension

#1

Message par littlechiki »

Bonjour, je me retrouve confronté à un problème qui sera surement résolu très facilement mais que je ne saurais résoudre.
Voilà, j'ai un edit sur lequel je note des choses et les données sont ensuite sauvegardées sur un .ini avec un IniWriteSection.
Ce que j'aimerai faire, c'est de restituer les données enregistrées dans l'ini dans mon input.
En gros
IniWriteSection($file,"General",GuiCtrlRead($edit)
GuiCtrlSetData($edit,"")
$read = IniReadSection($file,"General")
If Not @error Then
        For $i = 0 To $read[0][0]
                $line &= $read[$i][0] & @CRLF
        Next
        GuiCtrlSetData($edit,$line)
EndIf
Je sais que le problème viens du fait que le IniReadSection lis un array en 2 dimensions mais mon ini n'a qu'une seule dimension puisqu'il est créé à partir d'un IniWriteSection
Quelqu'un saurait il résoudre mon problème s'il vous plaît ?

littlechiki
Niveau 3
Niveau 3
Messages : 48
Enregistré le : sam. 13 avr. 2019 13:58
Status : Hors ligne

Re: IniReadSection sur une seule dimension

#2

Message par littlechiki »

Bon j’ai réessayé quelque chose d'autre : je compte le nombre d'occurrences de passage de ligne, ensuite je fait une boucle entre 1 et ce nombre d'occurrences et je note les données de la ligne avec un simple IniWrite
En gros ça fait
$occur = StringRegExp(GUICtrlRead($inventaire),@CRLF)
For $i = 1 To $occur
        $nth1 = StringInStr(GUICtrlRead($inventaire),@CRLF,0,$i-1)
        $nth2 = StringInStr(GUICtrlRead($inventaire),@CRLF,0,$i)
        StringTrimLeft(GUICtrlRead($inventaire),$nth1)
        $line = StringLeft(GUICtrlRead($inventaire),$nth2-1)
        IniWrite($file,"Inventaire",$i,$line)
Next
Bon ça ne marche pas totalement mais je pense être sur la bonne voie.
Quelqu'un à une idée ?

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5917
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: IniReadSection sur une seule dimension

#3

Message par mikell »

C'est pas très clair ton histoire
Mais si tu cherches à sauvegarder des lignes de texte contenues dans un Edit, passer par un .ini n'est pas forcément l'idéal - comme tu t'en es rendu compte :mrgreen:
Pourquoi ne pas directement copier le contenu de l'edit dans un fichier texte ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2115
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: IniReadSection sur une seule dimension

#4

Message par jchd »

Il y a quand même quelque chose qui m'interpelle. Chaque section d'un fichier .ini est un tableau de couples {clé, valeur}, donc une structure 2D.

Alors de deux choses l'une. Soit les "données" sont seulement une suite (un tableau 1D) de clés seules, auquel cas la structure de fichier .ini est complètement inutile; soit les "données" sont bien des couples {clé, valeur} et dans ce cas la structure 2D est impérative.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

littlechiki
Niveau 3
Niveau 3
Messages : 48
Enregistré le : sam. 13 avr. 2019 13:58
Status : Hors ligne

Re: IniReadSection sur une seule dimension

#5

Message par littlechiki »

Pourquoi ne pas directement copier le contenu de l'edit dans un fichier texte ?
En effet ça pourrait être une idée mais je m'y connais très peu là-dedans je dois dire. en fait, comme j'ai le contenu de 6 edit, de 18 input et autres joyeusetés, ça m'embêterais quand même un peu de devoir faire une trentaine de fichier texte pour sauvegarder tout ça quoi. Après comme je m'y connais peu, je ne sais pas comment et si je pourrait tout mettre dans le même fichier je dois dire.
Alors de deux choses l'une. Soit les "données" sont seulement une suite (un tableau 1D) de clés seules, auquel cas la structure de fichier .ini est complètement inutile; soit les "données" sont bien des couples {clé, valeur} et dans ce cas la structure 2D est impérative.
Alors sur ma première version, en effet, je n'avais pas de couple {clé, valeur} mais uniquement des valeurs. après avoir compris mon erreur, j'ai essayé de faire en sorte que chaque ligne de mon edit soit un couple {clé valeur} (ce que j'ai du mal à faire).

littlechiki
Niveau 3
Niveau 3
Messages : 48
Enregistré le : sam. 13 avr. 2019 13:58
Status : Hors ligne

Re: IniReadSection sur une seule dimension  

#6

Message par littlechiki »

Bon, je tenais à dire que j'ai trouvé une solution assez simple à mon problème en mettant sur du ini.
$occur = StringSplit(GuiCtrlRead($edit),@CRLF,1)
For $i = 1 To $occur[0]
        Iniwrite($file,"Contenu",$i,$occur[$i])
Next
Et pour restituer, un simple IniReadSection est nécessaire
Merci quand même à tous !

Répondre