Page 1 sur 1

[R] Renvoyer une valeur spécifique d'un fichier .ini

Posté : dim. 28 juil. 2013 21:05
par Pierre123
Bonjour,

J'utilise un code qui me permet de renvoyer un nombre aléatoire (qui me permet ensuite de lire un fichier au hasard dans une base de données). Ce chiffre aléatoire est saisi dans un fichier .ini pour éviter de retomber dessus lors des utilisations suivantes. Voici le code :

Code : Tout sélectionner

While $c <> 1
        $r = String(";"&Random(1,$array[1],1)&";")
        If Not StringInStr($str,$r,1) Then
            $str = $str&$r
            $bla = StringSplit($str,";;",1)
            $c = 1
            IniWrite("verifie.ini", "section2", "key", $str)
            Return $r
        EndIf
WEnd
Je me retrouve donc avec un fichier .ini qui ressemble à ça :

Code : Tout sélectionner

[section2]
key=;52;;867;;461;;229;;303;;969;;275;
Tout fonctionne très bien mais je souhaiterai ajouter une fonction "previous" : c'est à dire avoir un bouton pour revenir en arrière et récupérer le dernier chiffre aléatoire saisi (275), puis le clic suivant le précédent (969), etc. Je n'ai pour l'instant pas trouvé de solution qui puisse me permettre de faire ça. Peut-être ai je mal cherché ou existe il une fonction ou une solution pour y parvenir ?

Merci de votre aide

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : dim. 28 juil. 2013 22:12
par Tlem
Une idée comme une autre :

Transformer cette chaine ";52;;867;;461;;229;;303;;969;;275;" en cette chaine "52;867;461;229;303;969;275". Ensuite utilisez StringSplit() pour en faire un tableau. Enfin, vos boutons "Précédent" et "Suivant" devront simplement décrémenter/incrémenter une valeur ayant repris le nombre d'élément du tableau (élément 0).

Edit : Voici un exemple de code
► Afficher le texte

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : lun. 29 juil. 2013 13:14
par Pierre123
Merci Tlem,

C'est exactement ce que je cherche à faire. Il me reste plus qu'à essayer d'intégrer le bouton "lecture" et pour l'instant je n'ai pas réussi à faire fonctionner le tout correctement mais ça ne saurait tarder !

Sinon, les deux virgules (qui ne me dérangeait pas jusque là !), est ce dû à un mauvais codage de ma part ?

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : lun. 29 juil. 2013 13:53
par Tlem
Les deux virgules sont dues à cette partie de votre code :

Code : Tout sélectionner

$bla = StringSplit($str,"[b][color=#FF0000];;[/color][/b]",1)

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mar. 30 juil. 2013 01:22
par mikell
Tsss les 2 virgules sont posées à l'écriture

Code : Tout sélectionner

$r = String([color=#FF0000]";"[/color]&Random(1,$array[1],1)&[color=#FF0000]";"[/color])
...
$str = $str & $r
et après ben faut faire avec ^^

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mar. 30 juil. 2013 03:46
par Pierre123
les deux virgules ne viennent pas de ce bout de code en fait

Code : Tout sélectionner

$bla = StringSplit($str,";;",1)
mais bien de ma fonction random (honte à moi^^), j'ai donc modifié comme ceci

Code : Tout sélectionner

$r = String(";"&Random(1,$array[1],1))
ça me permet d'éviter ces quelques lignes supplémentaires

Code : Tout sélectionner

; Début du traitement de la chaine récupérée par IniRead() ==> $MyIniVar :
$MyIniVar = StringReplace($MyIniVar, ";;", ";")
; On supprime tout les points virgule qui pourraient être à gauche
While StringLeft($MyIniVar, 1) = ";"
    $MyIniVar = StringTrimLeft($MyIniVar, 1)
WEnd
; On supprime tout les points virgule qui pourraient être à droite
While StringRight($MyIniVar, 1) = ";"
    $MyIniVar = StringTrimRight($MyIniVar, 1)
WEnd
A présent tout fonctionne comme souhaité !

Merci Tlem et mikell !

Re: [..] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mar. 30 juil. 2013 08:45
par Tlem
Pierre123 a écrit :les deux virgules ne viennent pas de ce bout de code en fait
Exact. J'ai été trop vite dans la lecture et rédaction de ma réponse, mais vous avez bien interprété et corrigé ma bourde et c'est l'essentiel.

Ceci-dit, il vous restera toujours le point-virgule de gauche. ^^
Donc cette ligne reste indispensable :

Code : Tout sélectionner

$MyIniVar = StringTrimLeft($MyIniVar, 1)
Bonne journée.

Re: [R] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mar. 30 juil. 2013 11:15
par Pierre123
Ceci-dit, il vous restera toujours le point-virgule de gauche. ^^
Donc cette ligne reste indispensable :

Code : Tout sélectionner

$MyIniVar = StringTrimLeft($MyIniVar, 1)
Pour info, je ne l'ai pas mise et ça fonctionne quand même^^

Re: [R] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mar. 30 juil. 2013 23:06
par Tlem
Oui, ça fonctionne, mais vous vous retrouvez avec une valeur nulle (celle de l'élément 1 à cause du StringSplit() ). ^^

Donc si vous faites "Précédent" jusqu'au bout, vous aurez l'affichage d'une valeur vide !!!

Re: [R] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mer. 31 juil. 2013 10:18
par mikell
Tlem a raison, oui ça fonctionne mais c'est pas top
D'ailleurs le souci peut aussi être géré de cette façon

Code : Tout sélectionner

 Case $Precedent
        If $iMyIniVar > [color=#FF0000]2[/color] Then

Re: [R] Renvoyer une valeur spécifique d'un fichier .ini

Posté : mer. 31 juil. 2013 22:31
par Pierre123
Oui effectivement, cela peut poser soucis si je remonte jusqu'au premier élément je suis tout à fait d'accord. Je rajouterai donc une petite ligne de code.
Merci encore de vos réponses.