maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010
-
14 août 2007 à 17:39
cs_Sharkiller
Messages postés80Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention25 avril 2011
-
16 août 2007 à 16:29
Bonjour,
J'aimerais savoir comment faire pour faire une petite gymnastique avec un fichier txt je vous explique ; j'ai un fichier (config.txt) qui contient comme son nom l'indique des lignes de texte (une ligne par config) pour la configuration d'une application. J'aimerais savoir faire en sorte que mon application detecte dans le fichier config.txt la ligne suivante ("AutoExec, 1,0 - 2 false#") et si il detecte cette ligne l'application vb devra modifier cette ligne par en l'occurence ("AutoExec, 1,0 - 2 true#")
cs_Sharkiller
Messages postés80Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention25 avril 2011 14 août 2007 à 18:19
Bonjour,
Avec la méthode Line Input tu peux lire un fichier en mode séquentiel. Il suffit que tu remarques quelle ligne se réfère à "AutoExec, 1,0 - 2 false#" et de réécrire le fichier avec "AutoExec, 1,0 - 2 true#" pour cette même ligne.
cs_Sharkiller
Messages postés80Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention25 avril 2011 14 août 2007 à 19:01
Je vais essayer de mettre la bonne syntaxe^^...
Ca serait quelque chose du genre:
Open Path & "\config.txt" For Input As #1
While Not EOF(1)
Line Input #1,,TS
If TS="AutoExec, 1,0 - 2 false#" Then
Final=Final & "AutoExec, 1,0 - 2 true#" & vbcrlf
else
Final=Final & TS & vbcrlf
End If
Wend
Close #1
Voilà, en fait, explications:
Open ... For Input As ... permet de lire le contenu d'un fichier.
La boucle permet de lire le fichier jusqu'à la fin (EOF correspond à EndOfFile, donc tant qu'on n'atteint pas la fin du fichier, on continue à le lire).
Line Input permet de stocker la ligne en cours de lecture dans une variable (ici TS).
On traite alors cette ligne pour savoir ce qu'elle contient.
Si elle contient ce que tu cherches, tu la remplaces par celle que tu veux, et sinon tu stockes la même valeur dans une autre variable qui sera utilisée en tant que contenu final (ici Final).
Une fois que tu as la variable finale (donc après la fin de la boucle), tu fais:
Open Path & "\config.txt" For Output As #1
Write #1, Final
Close #1
Si le contenu du fichier est trop grand à la base pour pouvoir être contenu par la variable finale, il faut sauvegarder dans un fichier alternatif à chaque lecture de ligne, puis remplacer le fichier de base par le fichier alternatif une fois la boucle terminée.
Après peut-être existe-il une autre solution, peut-être même meilleure.
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 14 août 2007 à 19:14
merci sharkiller le problème c'est que après AutoExec, 1,0 - 2 false# il y à d'autre chose donc ton code permet de remplacer AutoExec, 1,0 - 2 false# par une autre chaine mais le reste est toujours visible il faut supprimer entièrement la ligne si tu sais faire merci bcp
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 14 août 2007 à 19:41
mince alors le script ne fonctionne pas du tout chez moi je me suis peut etre mal exprimé je vais essayer de reformuler :
j'ai un fichier txt comme ci dessous:
ligne1 - texte a - nombre
ligne 2 - nombre - texteb
ligne 3 - chiffre - nombre
ligne 4 - nombre - textec
...
chaque ligne est différente
j'aimerais que l'orsque l'application detecte (par exemple) "ligne 3 - chiffre" qu'il supprime la ligne ou il à trouvé "ligne 3 - chiffre" c'est à dire la ligne 3 sur cet exemple le fichier à la final devrais donc ressembler à
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 14 août 2007 à 20:36
Open "c:\fichier.txt" For Input As #1
While Not EOF(1)
Line Input #1, ts
If ts <> "loren est" Then
Final = Final & ts & vbCrLf
End If
Wend
Close #1
MsgBox Final + vbCrLf + ts
Open Path & "c:\config.txt" For Output As #1
Write #1, Final
Close #1
mais pareil sa dégage pas la ligne car le but c'est que sa dégage la ligne ou ce trouve le texte mais tout entier et la remplace par une autre chaine de caractère et le blem c'est que je peut pas utliser la fonction replace !
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 14 août 2007 à 20:49
non en fait si le exe detecte "loren est" (par rapport au test) dans le fichier txt alors il dois suprimmer le contenu entier de la ligne (ou se trouve "loren est") et mettre autres chose
cs_Sharkiller
Messages postés80Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention25 avril 2011 14 août 2007 à 20:53
Ben ça l'est de moins en moins lol^^.
Au début j'ai cru que tu voulais effectivement remplacer le contenu de la ligne par autre chose, mais ensuite tu m'as dis que tu voulais supprimer la ligne entièrement^^.
Par exemple, tu veux que
bonjour
question
au revoir
donne
bonjour
au revoir
ou donne
bonjour
comment ça va?
au revoir
quand tu remplaces "question" par "comment ça va?"?
cs_Sharkiller
Messages postés80Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention25 avril 2011 14 août 2007 à 21:04
Ah OK, je vois
Alors il te faut sélectionner la chaîne de la sorte:
dim OK as Boolean
dim a as Integer
for a=1 to len(ts)
If mid(ts,a,len("loren est")) <> "loren est" Then OK=True
next a
if OK=true then Final=Final & ts & vbcrlf
au lieu de faire
If ts <> "loren est" Then
Final = Final & ts & vbCrLf
End If
Normalement, il ça devrait répondre à tes attentes .
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 14 août 2007 à 21:09
je suis un débutant tu sais et voila ce que j'ai mis dans mon code
Private Sub Command1_Click()
Open "c:\fichier.txt" For Input As #1
While Not EOF(1)
Line Input #1, ts
Dim OK As Boolean
Dim a As Integer
For a = 1 To Len(ts)
If Mid(ts, a, Len("loren est")) <> "loren est" Then OK = True
Next aIf OK True Then Final Final & ts & vbCrLf
Wend
Close #1
MsgBox Final + vbCrLf + ts
Open Path & "c:\config.txt" For Output As #1
Write #1, Final
Close #1
End Sub
je dois me tromper car franchement sa fait rien :(
123