Bonjours,
Avant de commencer ma programmation j'aurai bien voulu d'abord avoir votre avis sur mon raisonnement de programmation si cette façon de le faire est correcte ou pas!
Donc, pour le moment j'ai un fichier texte qui peux être très gros (90..MB) et à des moments je dois inserer par exemple à la ligne 1700, une nouvelle ligne texte + CRLF. ou tout simplement modifier cette ligne!
Voilà comment j'ai voulu réaliser, tout simplement de faire une boucle, rechercher le nombre CRLF jusqu'a 1700, si No_CRLF est atteins alors rentre dans la condition pour ajouter ou modifier la ligne 1700, après recopie tout le reste au fichier destination.
Puis effacer le fichier source et renommer le fichier destination en fichier source.
Le seul souci que je vois est que si je prends par exemple la ligne 47000 tout cela peut prendre beaucoup de temps, car il faut passer du début ligne à la ligne 47000...
Merci beaucoup de me guider...
Voici un peut prés mon idée de programation.
Salutations
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 OpenDialog1_Execute := 'MonFichier1.txt'; SaveDialog1_Execute := 'MonFichier2.txt'; repeat BlockRead(); TempStr1 := Copy()// copy la ligne jusque CRLF dans une variable no_CRLF := no_CRLF +1; // incremente le nombre de ligne expl. jusque 1700 If no_CRLF = Edit1.text then begin InputQuery('Modifier la ligne expl 1700); // Si pas modifier ajoute une nouvelle ligne .. InputQuery('Ajouter une nouvelle ligne); // ajouter une nouvelle Ligne.. .. end; Seek(Source,Length(TempStr1)+..) // se position au prochain CRLF .. BlockWrite(); // -> 'MonFichier2.txt' until (NumRead = 0) ; CloseFile(F); Erase(F) // MonFichier1.txt Rename(F) // 'MonFichier2.txt' -> 'MonFichier1.txt'
Ardely
Partager