JL35
Nombre de messages : 7089 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Recherches dans un fichier texte Dim 20 Mai 2018 - 9:38 | |
| Il est beaucoup plus facile de lire le fichier entier dans une variable unique, et de faire dans cette variable les recherches, remplacements, suppressions, insertions, etc. avec les fonctions de traitement de chaînes. C'est vraiment simple et rapide, grâce à la commande 'type': - Code:
-
FileToString("C:\TEXTES\Lorem.txt"): ' un fichier quelconque message str$(len(buf$)): ' pour voir END ' ----- SUB FileToString(f$) ' Copie d'un fichier de type texte f$ dans une chaîne buf$ IF VARIABLE("buf$") = 0 THEN DIM buf$ EXECUTE_WAIT "cmd.exe /c type "+CHR$(34)+f$+CHR$(34)+" | clip" buf$ = CLIPBOARD_STRING_PASTE$ END_SUB
On peut ensuite réécrire éventuellement la chaîne modifiée dans un fichier texte résultat, en une seule fois (File_Writeln'. (noter que l'écriture ajoute un retour chariot interligne à la fin) | |
|
silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Recherches dans un fichier texte Dim 20 Mai 2018 - 10:21 | |
| Je confirme puisque c'est ainsi que je procède | |
|
Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: Recherches dans un fichier texte Dim 20 Mai 2018 - 15:50 | |
| Juste une remarque. Si on veut lire le contenu entier d'un memo: - Code:
-
FileToString("C:\TEXTES\Lorem.txt"): ' un fichier quelconque message str$(len(buf$)): ' pour voir ' autre posssibilité: memo 10 : full_space 10:file_load 10,"z:\prg_teste_debog.txt" message str$(len(text$(10))) END ' ----- SUB FileToString(f$) ' Copie d'un fichier de type texte f$ dans une chaîne buf$ IF VARIABLE("buf$") = 0 THEN DIM buf$ EXECUTE_WAIT "cmd.exe /c type "+CHR$(34)+f$+CHR$(34)+" | clip" buf$ = CLIPBOARD_STRING_PASTE$ END_SUB La fonction TEXT$() est une fonction pour EDIT, mais elle fonctionne aussi pour un memo, même si cela devrait provoquer une erreur. Text$(10) (ici) prend le contenu entier d'un memo. | |
|
JL35
Nombre de messages : 7089 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Recherches dans un fichier texte Dim 20 Mai 2018 - 20:18 | |
| Exact Oscaribout, ça donne exactement le même résultat d'une façon encore plus simple, et il me semble, plus rapide ! On peut juste éventuellement ajouter un HIDE 10 derrière le MEMO 10, pour que ce soit plus discret. Et finalement j'adopte ta solution qui est meilleure que la mienne et plus discrète (pas d'affichage, même si c'est bref, de fenêtre noire) - Code:
-
DIM f$: f$ = "C:\TEXTES\Lorem.txt" FileToString_ex(f$): ' un fichier quelconque message "Ancien_ "+str$(len(buf$)): ' pour voir buf$ = "" ' autre posssibilité: FileToString(f$) message "Nouveau_ "+str$(len(buf$)) END ' ----- SUB FileToString_ex(f$) ' Copie d'un fichier de type texte f$ dans une chaîne buf$ IF VARIABLE("buf$") = 0 THEN DIM buf$ EXECUTE_WAIT "cmd.exe /c type "+CHR$(34)+f$+CHR$(34)+" | clip" buf$ = CLIPBOARD_STRING_PASTE$ END_SUB ' Nouvelle formule : SUB FileToString(f$) ' Copie d'un fichier de type texte f$ dans une chaîne buf$ ' (Merci Oscaribout !) IF VARIABLE("buf$") = 0 THEN DIM buf$ MEMO 9000: HIDE 9000: WIDTH 9000,2000: FILE_LOAD 9000,f$ buf$ = TEXT$(9000): DELETE 9000 END_SUB C'est vrai que le TEXT$(N) n'est pas prévu pour un MEMO, mais si ça marche, autant en profiter. | |
|
Contenu sponsorisé
| Sujet: Re: Recherches dans un fichier texte | |
| |
|