Page 1 sur 1

IniReadSection sur une seule dimension

Posté : mar. 10 mars 2020 16:03
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 ?

Re: IniReadSection sur une seule dimension

Posté : mer. 11 mars 2020 11:55
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 ?

Re: IniReadSection sur une seule dimension

Posté : mer. 11 mars 2020 19:49
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 ?

Re: IniReadSection sur une seule dimension

Posté : mer. 11 mars 2020 22:26
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.

Re: IniReadSection sur une seule dimension

Posté : jeu. 12 mars 2020 11:13
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).

Re: IniReadSection sur une seule dimension  

Posté : ven. 13 mars 2020 14:12
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 !