Page 1 sur 2
Editer un fichier texte
Publié : lun. 17/sept./2007 12:47
par Atomo
Salut, je fréquente ce forum depuis quelques mois et je viens juste de m'inscrire car j'ai une question pour laquel je ne trouve pas de réponse.
Je voudrais savoir si il est possible de remplacer une ligne de texte dans un fichier texte par une autre, exemple :
Fruit1=banane
Fruit2=Pomme
Fruit3=ananas
Fruit4=Kiwi
Je voudrais remplacer "Fruit3=ananas" par "Fruit3=orange".
Merci de bien vouloir m'aider.
Publié : lun. 17/sept./2007 13:45
par Kwai chang caine
Bonjour ATOMO
Moi je ferais comme ça :
Code : Tout sélectionner
ExpressionRechercher.s = "Fruit3=ananas"
ExpressionQuiRemplace.s ="Fruit3=orange"
FichierOrigine.s = "c:\c.txt"
OpenFile(1,FichierOrigine)
OpenFile(2,"c:\Temp.txt")
Repeat
ExpressionLue.s = ReadString(1)
If ExpressionLue = ExpressionRechercher
WriteStringN(2, ExpressionQuiRemplace)
Else
WriteStringN(2, ExpressionLue)
EndIf
Until Eof(1) <> 0
CloseFile(1)
CloseFile(2)
DeleteFile(FichierOrigine)
RenameFile("c:\Temp.txt", FichierOrigine)
Mais attention, je ne suis pas une référence dans le forum.
Si ça peux te dépanner.
Je pense que mes grands freres trouverons surement mieux.
Publié : lun. 17/sept./2007 14:37
par Atomo
Merci pour ta réponse Kwai, je vais essayer de faire comme ca.
Publié : lun. 17/sept./2007 18:05
par Backup
comme le fait Kcc mais en utilisant Findstring() qui est fait pour ça !!

Publié : mar. 18/sept./2007 8:46
par Brossden69
Un petit bout de code pour expliquer comment changer toutes les occurences en un seul passage !
Code : Tout sélectionner
; >>>> Creation du FichierOrigine
FichierOrigine.S = "c:\c.txt"
CreateFile(1,FichierOrigine)
WriteStringN(1,"Fruit1=banane")
WriteStringN(1,"Fruit2=Pomme")
WriteStringN(1,"Fruit3=ananas et autres")
WriteStringN(1,"Fruit4=Kiwi ")
WriteStringN(1,"Fruit3=ananas")
WriteStringN(1,"Fruit3=ananas")
WriteStringN(1,"Fruit3=ananas")
CloseFile(1)
; >>>> Fin de Creation du FichierOrigine
; >>>> Mise en mémoire dans la chaine ContenuFichier de la totalité du FichierOrigine"
rc.S = Chr(13)+Chr(10) ; Retour Chariot
OpenFile(1,FichierOrigine)
Repeat
ContenuFichier.S + ReadString(1)+rc
Until Eof(1)
; >>>> Fin Mise en mémoire dans la chaine ContenuFichier de la totalité du FichierOrigine"
; >>>> Affichage
MessageRequester("Chaine Source",ContenuFichier)
; >>>> Affichage
; >>>> Substitution de la chaine
ExpressionRechercher.S = "Fruit3=ananas"
ExpressionQuiRemplace.S ="Fruit3=orange"
ContenuFichier = ReplaceString(ContenuFichier,ExpressionRechercher,ExpressionQuiRemplace)
; >>>> Fin Substitution de la chaine
; >>>> Affichage
MessageRequester("Chaine modifiée",ContenuFichier)
; >>>> Affichage
; >>>> Ecriture de la nouvelle chaine
FileSeek(1,0)
WriteString(1,ContenuFichier)
CloseFile(1)
End
; >>>> Fin programme
Pour ne changer que la première chaine comme le dit Dobro, le code qui suit permet de changer la change voulu même si la ligne du texte comporte d'autre caractères ce qui n'est pas le cas du code de Kc que je salut ici bien bas !
Code : Tout sélectionner
; >>>> Creation du FichierOrigine
FichierOrigine.S = "c:\c.txt"
CreateFile(1,FichierOrigine)
WriteStringN(1,"Fruit1=banane")
WriteStringN(1,"Fruit2=Pomme")
WriteStringN(1,"Fruit3=ananas et autres")
WriteStringN(1,"Fruit4=Kiwi ")
WriteStringN(1,"Fruit3=ananas")
WriteStringN(1,"Fruit3=ananas")
WriteStringN(1,"Fruit3=ananas")
CloseFile(1)
; >>>> Fin de Creation du FichierOrigine
; >>>> Mise en mémoire dans la chaine ContenuFichier de la totalité du FichierOrigine"
rc.S = Chr(13)+Chr(10) ; Retour Chariot
OpenFile(1,FichierOrigine)
Repeat
ContenuFichier.S + ReadString(1)+rc
Until Eof(1)
; >>>> Fin Mise en mémoire dans la chaine ContenuFichier de la totalité du FichierOrigine"
; >>>> Affichage
MessageRequester("Chaine Source",ContenuFichier)
; >>>> Affichage
; >>>> Substitution de la chaine
ExpressionRechercher.S = "Fruit3=ananas"
ExpressionQuiRemplace.S ="Fruit3=orange"
Position = FindString(ContenuFichier,ExpressionRechercher,1)
ContenuFichier = Left(ContenuFichier,Position-1)+ ExpressionQuiRemplace + Mid(ContenuFichier,Position+Len(ExpressionQuiRemplace),Lof(1))
; >>>> Fin Substitution de la chaine
; >>>> Affichage
MessageRequester("Chaine modifiée",ContenuFichier)
; >>>> Affichage
; >>>> Ecriture de la nouvelle chaine
FileSeek(1,0)
WriteString(1,ContenuFichier)
CloseFile(1)
End
; >>>> Fin programme
Publié : mar. 18/sept./2007 8:59
par Kwai chang caine
Brosden69 ?

Petit nouveau ou vieille baderne ?

Publié : mar. 18/sept./2007 9:02
par Brossden69
Devine !
Kwai machin truc chose !
Mon compte d'origine se trouve bloqué par ce que j'ai changé mon adresse email ........

Publié : mar. 18/sept./2007 9:03
par Kwai chang caine
Publié : mar. 18/sept./2007 9:04
par Brossden69
Regarde quand même mes deux précédents posts je les ai modifiés !
Publié : mar. 18/sept./2007 10:10
par Backup
ben oui

c'est bien notre bon vieux brossdent !! (j'ai verifié les ip !!

)
tu devrai demander a Fred de faire quelques chose , genre modifier ton email dans ton profil "Brossdent", en mettant ton adresse actuelle !!

Publié : mar. 18/sept./2007 10:19
par Brossden69
@ Dobro je ne t'ai pas attendu !! mdr
mais comme je ne peux me passer trés longtemps de vos délires associes aux miens, j'ai pris un nouveau pseudo, provisoir, qui ne laisse pas de doute sur l'original !
C'est BROSSDEN sans T !! DOBRO
BROSS étant le début de mon nom de Famille et DEN le début de Denis !
Publié : mar. 18/sept./2007 10:52
par Kwai chang caine
A ne pas confondre avec la celebre et désormais obsolete émission de naguy.
Quoi qu'il en soit que ce soit à la télé ou bien au forum pure :
N'oubliez pas votre "brosse dent"
Je ne la ferais plus c'est promis, mais la avec la faute de frappe de DOBRO, j'avais trop envie

Publié : mar. 18/sept./2007 10:54
par Backup
Brossden69 a écrit :@ Dobro je ne t'ai pas attendu !! mdr
mais comme je ne peux me passer trés longtemps de vos délires associes aux miens, j'ai pris un nouveau pseudo, provisoir, qui ne laisse pas de doute sur l'original !
C'est BROSSDEN sans T !! DOBRO
BROSS étant le début de mon nom de Famille et DEN le début de Denis !
faut reconaitre qu'il y a un jeux de mot a faire, c'etait bien ton but non ?

Publié : mar. 18/sept./2007 11:19
par Brossden69
Pour Mes 150 Kg de Kcc !
Tu peux tout te permettre tu sais bien entre nous pas ce PB !
Pour Dobro :
Re Devine !
Publié : mar. 18/sept./2007 12:12
par Ar-S
et 69 c'est que tu es Lyonnais ou que tu es passionné de .......... numérologie ?