|
Remplacer ligne par autre ligne dans fichier texte |
Débuté par Nico, 19 sep. 2018 16:27 - 4 réponses |
| |
| | | |
|
| |
Membre enregistré 2 messages |
|
Posté le 19 septembre 2018 - 16:27 |
Bonjour,
Je suis sous la version windev 20. Je cherche a ouvrir un fichier texte, puis le parcourir et remplacer certaine ligne puis enregistrer le fichier texte.
Pour l'instant j'arrive ouvrir le ficher puis le parcourir, mais je n'arrive pas a remplacer les lignes désirer.
Voici un exemple du fichier en question: Version 300 Charset "Neutral" Delimiter "," Unique 2 Index 2 CoordSys EPSG:4326 Bounds (-180, -90) (180, 90) Columns 34 Num_affaire Char(11) Record_Number Integer Gd_Info Char(20)
Region 1 8 0.0699647508912687 43.2981449959216 0.0703085136166206 43.297152083047 Pen (5,0,16757504) Brush (1,0,16777215) Region 1 5 0.0653919104445423 43.3022879502253 0.0654002766228093 43.302066596456 0.0658478501158941 43.3020756165794 Pen (7,5,16787518) Brush (1,0,16777215)
Je cherche a remplace les ligne qui contiennent pen(x,x,xxxxxxxx) par pen(y,y,yyyyyyyy) Les valeurs x peuvent varier par contre les valeur y que je souhaite mettre seront fixe.
Voici mon code pour l'instant:
sNomfic est une chaîne = SAI_import_txt // SAI_import_txt me permet d'aller chercher mon fichier txt dans l'exporateur windows
ContenuFichier est un entier sMaligne est une chaîne
ContenuFichier = fOuvre(SAI_import_txt,foLectureEcriture)
SI ContenuFichier = -1 ALORS Erreur("impossible") FIN sMaligne = fLitLigne(ContenuFichier) TANTQUE sMaligne<>EOT SI sMaligne = fCherche(ContenuFichier,"pen") ALORS fEcrit(ContenuFichier," Pen (5,0,12345678)") FIN sMaligne = fLitLigne(ContenuFichier)
ToastAffiche("modif effectué",toastCourt,cvMilieu,chCentre)
FIN
Merci par avance pour tout l'aide que vous pourrez m'apporter.Message modifié, 19 septembre 2018 - 16:30 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 623 messages Popularité : +100 (114 votes) |
|
Posté le 19 septembre 2018 - 17:12 |
Hello, a tester (Ecrit sans windev, ya ptete des fautes de syntaxe) :
sTexteModifié est une chaîne = "" sTexte est une chaîne = fChargeTexte(SAI_import_txt) SI sTexte<> "" ALORS POUR TOUTE chaîne sLigne de sTexte SEPAREE PAR RC SI sLigne [= "Pen(" ALORS sLigne = " Pen (5,0,12345678)" sTexteModifié += sTexteModifié = "" ? sLigne SINON RC+sLigne FIN FIN fSauveTexte(SAI_import_txt,sTexteModifié) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 165 messages Popularité : +12 (12 votes) |
|
Posté le 20 septembre 2018 - 08:40 |
Bonjour;
FichierSélectionné , sLigne est une chaîne nIDFichier, nFermefichier est un entier sContenuDuFichier est une chaîne
FichierSélectionné = fSélecteur("", "", "Sélection d'un fichier", "Fichier Texte" + TAB + "*.txt", "txt", fselOuvre) SI FichierSélectionné <>"" ALORS nIDFichier = fOuvre(FichierSélectionné , foLectureEcriture) SI nIDFichier = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON sLigne = fLitLigne(nIDFichier) TANTQUE sLigne<>EOT SI sLigne = "Pen (7,5,16787518)" ALORS sContenuDuFichier += "TARATATA"+RC SINON sContenuDuFichier += sLigne+RC FIN sLigne = fLitLigne(nIDFichier) FIN fSauveTexte(FichierSélectionné,sContenuDuFichier) nFermefichier = fFerme(nIDFichier) SI nFermefichier = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON Info("Bingo") FIN FIN FIN
Bon Dev. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
Posté le 20 septembre 2018 - 16:30 |
MERCI !!!! Beaucoup à tous les deux.
J'ai fais un mix entre les deux car les valeur x du pen(x,x,xxxxxx) peuvent être différentes donc j'ai pris le second code que j'ai modifié de façon a se qu'il cherche une ligne qui commence par "pen(" comme dans le premier code.
Voici mon code final pour les prochains qui souhaiteraient faire comme moi:
FichierSélectionné , sLigne est une chaîne nIDFichier, nFermefichier est un entier sContenuDuFichier est une chaîne
FichierSélectionné = fSélecteur("", "", "Sélection d'un fichier", "Fichier Texte" + TAB + "*.txt", "txt", fselOuvre) SI FichierSélectionné <>"" ALORS nIDFichier = fOuvre(FichierSélectionné , foLectureEcriture) SI nIDFichier = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON sLigne = fLitLigne(nIDFichier) TANTQUE sLigne<>EOT SI sLigne [= " Pen (" ALORS sContenuDuFichier += " Pen (5,0,12345678)"+RC SINON sContenuDuFichier += sLigne+RC FIN sLigne = fLitLigne(nIDFichier) FIN fSauveTexte(FichierSélectionné,sContenuDuFichier) nFermefichier = fFerme(nIDFichier) SI nFermefichier = -1 ALORS Erreur(ErreurInfo(errMessage)) SINON Info("Bingo") FIN FIN FIN
|
| |
| |
| | | |
|
| | |
| |
Posté le 21 septembre 2018 - 12:06 |
Bonjour.
perso comme Francois C. j'aurais plutot utilisé
sTexte est une chaîne = fChargeTexte(SAI_import_txt)
tu as déjà tout ton texte dans une variable chaine
apres suffit de faire un truc du genre
npos est un entier = Position(sTexte ,"Pen (")
puis rechercher la chaine complete avec nposfin est un entier = Position(sTexte ,")",npos+1) //(je recherche la fin de la chaine par le carapater ")" )
puis machaine = stexte[npos,nposfin+1]
manouvellechaine = "Pen (5,0,12345678)"
et remplace(stexte,machaine,manouvellechaine)
enfin fsauvetexte ....
tu mets ça dans une boucle si besoin... |
| |
| |
| | | |
|
| | | | |
| | |
|