[R] Sauter des lignes dans un fichier ini

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

[R] Sauter des lignes dans un fichier ini

#1

Message par TT22 »

Bonjour,
Je voudrais savoir comment faire pour sauter des lignes dans un fichier ini.
Car dans certains de mes scripts, je stocke des données dans des ini.
Mais quelques fois, les données doivent sauter des lignes et quand je récupère les données, il ne lit que la première ligne.
Par exemple :
[section1]
donnée1=ligne1
ligne2
ligne3
donnée2=ligne4
ligne5
ligne6

Si je lui demande de récupérer la donnée1, il va lire juste ligne1 alors que je voudrais qu'il lise :
ligne1
ligne2
ligne3

Donc est-ce quelqu'un peut m'aider ? :mrgreen:
Modifié en dernier par TT22 le mer. 15 juin 2011 14:37, modifié 3 fois.
Cordialement,
TT22
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#2

Message par jchd »

Tu t'obstines à employer un format de fichier qui ne correspond pas à ton besoin.
Soit tu respectes la structure d'un fichier .ini de façon à pouvoir employer les fonctions Ini*() natives sans problème, soit tu t'inventes un format de fichier que tu penses adapté à ton besoin et tu te le gères "à la mimine" à coups de FileRead[Line], FileWrite[Line], avec passage par un tableau ou pas.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#3

Message par mikell »

TT22 tu sais que t'es lourd ? :mrgreen:

A standard ini file looks like:
[Section]
Key=Value

Tu DOIS respecter cette structure, ou alors comme dit le chef jchd, travaille avec un fichier txt !

Si tu écris ton ini comme ça :
[section1]
donnée1=ligne1#ligne2#ligne3
donnée2=ligne4#ligne5#ligne6

alors ce script marche :

Code : Tout sélectionner

$var = IniRead ("MonIni.ini", "section1", "donnée1", "" )
$read = StringSplit ($var, "#")
MsgBox(0,"", $read[1] & @CRLF & $read[2] & @CRLF & $read[3])
 
Tu peux aussi l'écrire comme ça :
[section1]
donnée1-1=ligne1
donnée1-2=ligne2
donnée1-3=ligne3
donnée2-1=ligne4
donnée2-2=ligne5
donnée2-3=ligne6

alors ce script marche :

Code : Tout sélectionner

$out = ""
$var = IniReadSection ("MonIni.ini", "section1" )
For $i = 1 To $var[0][0]
    If StringMid ($var[$i][0], 7, 1) = "1" Then $out = $out & $var[$i][1] & @CRLF
Next
MsgBox(0,"", $out)
 
Teste ces scripts, fais comme tu veux mais didiou RESPECTE la structure d'un ini :twisted:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#4

Message par TT22 »

@ mikell :
Ta première solution me plait bien mais mais au bout de 1024 caractères, il retourne à la ligne :(
Cordialement,
TT22
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#5

Message par jchd »

oui et il y a d'autres limitations avec les fichiers .ini, selon les versions de système.
Cela rend la généralisation de leur emploi très délicate.

Si c'est pour stocker des données structurées et potentiellement volumineuses, mieux vaut utiliser SQLite. Au passage ça t'apprendra comment employer une base de données simple et puissante.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#6

Message par mikell »

Et mon 2ème script ?
Avec lui pas de longues lignes de caractères :wink:

Maintenant, je te signale que la première solution de jchd est de loin la meilleure (cf ma signature)
Si tu fantasmes sur les ini, rien ne t'empêche de faire un fichier txt et de lui donner l'extension .ini, tu auras un beau fichier avec une icone de ini et tu auras beaucoup plus de libertés avec les FileWrite(), FileWriteLine(), les fonctions String...() etc
:roll:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#7

Message par TT22 »

Ouai, mais enfaite les données sont parfois définies par des fichiers et donc il faudrait que le saut de ligne soit automatisé (donnée1-1=ligne1 ; donnée1-2=ligne2 ; etc...)
Modifié en dernier par TT22 le lun. 13 juin 2011 19:10, modifié 1 fois.
Cordialement,
TT22
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#8

Message par mikell »

A chaque IniWrite() un nouveau couple "key=value" est écrit dans la section et le saut de ligne est alors automatique
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#9

Message par TT22 »

Un petit exemple ? :mrgreen:
Cordialement,
TT22
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#10

Message par mikell »

Tu exagères, tu es feignant comme une couleuvre... :x

Code : Tout sélectionner

For $i = 1 To 9
IniWrite ( "MonIni.ini", "section1", "donnée1-" & $i, "ligne" & $i )
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#11

Message par TT22 »

Ok.
Et juste une dernière chose, comment on fait pour savoir le nombre de lignes qu'il y a dans un fichier ?

Edit : Enfait, j'ai trouvé :
#Include <File.au3>
_FileCountLines($sFilePath)
Cordialement,
TT22
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#12

Message par mikell »

Ben voilà, quand tu cherches tu trouves :wink:
Tu vas donc pouvoir passer ce post en "résolu"
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#13

Message par TT22 »

Enfait, non je ne passe pas en résolut car lorsque j'utilise ça :
► Afficher le texte
Ça marche quand les lignes ont étés sautés volontairement mais lorsqu'il n'a plus de place et qu'il va à la ligne parce qu’il n'a pas le choix, il ne remet pas "donnée1-1=" par exemple. Il va directement à la ligne :(

En fait, ce qu'il faudrait ça serait que l'on dise que "donnée1=" va d'un certain signe à un autre.
Comme ça, y'a pas besoin de mettre touts les "donnée1-1" ; "donée1-2".

Par exemple, si on dit que le signe c'est #1234# alors donnée1 serat égale à :
donée1=#1234#ligne1
ligne2
ligne3#1234#
Cordialement,
TT22
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#14

Message par zeshrek »

Ton #1234# on appele ca un séparateur.
Et ton :
[quote=TT22]En fait, ce qu'il faudrait ça serait que l'on dise que "donnée1=" va d'un certain signe à un autre.
Comme ça, y'a pas besoin de mettre touts les "donnée1-1" ; "donée1-2".

Par exemple, si on dit que le signe c'est #1234# alors donnée1 serat égale à :
donée1=#1234#ligne1
ligne2
ligne3#1234#[/quote]
on appele ca une description de ton format de fichier (quand on est gentil parceque bon, c'est quand même un peu light)
Bref, tu es en train de créer ton propre format d'enregistrement.
Alors le prend pas mal, mais vu que tu as pas l'air hyper au point je te suggère de suivre le conseil de jchd et de stocker tes données dans une BdD. Mais en tout cas laisse tomber le fichier ini, c'est pas fait du tout pour ce que tu veux fare.
Si vis pacem para bellum
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#15

Message par TT22 »

Ouai, donc comment je fais ? :wink:
Cordialement,
TT22
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#16

Message par zeshrek »

Le plus simple ? D'apres ce que tu en as dit, je vois bien une base de donnée avec juste une table contenant 2 champs (le premier contient un index, le second les données). Pour la base de données, a toi de voir, sqlite comme te propose jchd, ou un fichier (access, dbase, paradox, fox pro, etc... a toi de faire ton choix) que tu auras déclaré en source de données ODBC.
Si vis pacem para bellum
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#17

Message par TT22 »

Donc comment je fais si je veux le faire avec un séparateur ?
Cordialement,
TT22
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#18

Message par jchd »

Argh !

Bon je veux bien te faire un schéma SQLite quand j'aurai 5 minutes, mais il faudrait quand même que tu mettes un tant soit peu les pieds sur terre et nous dire exactement ce dont tu as besoin, parce que sinon on part dans un développement en spirale sans fin (et, entre-nous soit dit, un peu usant pour les nerfs).

Donc, essayant de poser une base, tu as besoin de stocker l'image d'une arborescence de répertoires et de fichiers avec leur contenu. OK, mais en quoi ce "machin" se différencie-t-il d'un volume FAT, XFAT, NFS ou NTFS ? A quoi ce bidule va-t-il te servir (sans indiscrétion, la question serait plutôt : "Comment comptes-tu l'exploiter ?") et quel intérêt présente-t-il par rapport à un système de fichiers ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#19

Message par TT22 »

TT22 a écrit :Ouai, mais enfaite les données sont PARFOIS définies par des fichiers . . .
Parfois mais pas toujours :mrgreen:
Cordialement,
TT22
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Sauter des lignes dans un fichier ini

#20

Message par mikell »

jchd a écrit :Argh !
... un peu usant pour les nerfs
Bienvenue au club :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre