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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Pierre123
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 28 juil. 2013 20:35
Status : Hors ligne

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

#1

Message 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
Modifié en dernier par Pierre123 le mar. 30 juil. 2013 03:47, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Pierre123
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 28 juil. 2013 20:35
Status : Hors ligne

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

#3

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#4

Message 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)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#5

Message 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 ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Pierre123
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 28 juil. 2013 20:35
Status : Hors ligne

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

#6

Message 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 !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#7

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Pierre123
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 28 juil. 2013 20:35
Status : Hors ligne

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

#8

Message 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^^
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#9

Message 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 !!!
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#10

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Pierre123
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 28 juil. 2013 20:35
Status : Hors ligne

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

#11

Message 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.
Répondre