Bonjour
Votre avis m'intéresse.
Exemple : Soit un fichier (séquentiel) de 100 feuilles (de 1 à DerNum) contenant chacune 25 lignes (texte au km) de renseignements. Donc 2500 lignes. Je dois modifier par exemple certaines lignes de la page 10 (NumeroProb ) soit de la ligne 226 à 250.
Opération en 4 phases :
1/ Le programme lit et enregistre les feuilles de 1 à 9 dans un fichier tampon;
2/ Le programme récupère les datas corrigés de la feuille 10 et les enregistre à la suite sur le fichier tampon;
3/ Le programme lit et enregistre les feuilles 11 à 100 à la fin du fichier tampon;
4/ Le contenu du fichier tampon remplace le contenu du fichier source.
Le programme exemple fonctionne parfaitement. Il sert à modifier dans un fichier séquentiel certaines lignes. Opération en quatre phases en enregistrant les datas sur un fichier tampon (amendement.txt) puis remplacer le contenu du fichier source par le fichier tampon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Option Explicit On Imports System.IO Imports System.Text Imports System.Threading[B]Est-ce la bonne méthode à appliquer ?Je ne trouve rien de plus simple et compact en ligne ! L'idéal serait de trouver une fonction qui me permet d'écrire directement sur les lignes 226 à 250 dans mon exemple vu plus haut sans écrire toute cette usine à gaz ! [B]
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 Sub ValidCorrectionProbleme() 'Fonction : Modifier dans un fichier séquentiel certaines lignes. Opération en quatre phases en enregistrant les datas sur 'un fichier tampon (amendement.ech) puis remplacer le contenu du fichier source par le fichier tampon. 'Phase 1 : Lecture et enregistrement dans le tampon des problèmes de 1 à NumeroProb -1 Try ' Création d'une instance de StreamReader pour permettre la lecture du fichier source Dim monStreamReader As StreamReader = New StreamReader(ToolStripTextBox1.Text) ' exemple lire : "C:\sb\0.ech") 'Création du nouveau dossier du fichier tampon s'il n'éxiste pas déja If Directory.Exists("c:\test\") = False Then Directory.CreateDirectory("c:\test\") 'détruit le fichier tampon précédent s'il existe If File.Exists("c:\test\amendement.txt") = True Then File.Delete("c:\test\amendement.txt") 'Pour enregistre Dim strFile As String = "c:\test\amendement.txt" ' fichier tampon pour enregistrer le fichier et ses corrections. Dim monStreamWriter As StreamWriter If (Not File.Exists(strFile)) Then monStreamWriter = File.CreateText(strFile) Else monStreamWriter = File.AppendText(strFile) End If 'Lecture et enregistrement dans le tampon des problèmes de 1 à NumerProb -1 For Me.nnn = 1 To NumeroProb - 1 'Lecture de 25 lignes de chaque problème For Me.n = 1 To 25 Ligne(Me.n) = monStreamReader.ReadLine() Next Me.n 'enregistre les 25 lignes monStreamWriter.WriteLine(Ligne(1) + Chr(13) + Chr(10) + Ligne(2) + Chr(13) + Chr(10) + Ligne(3) + Chr(13) + Chr(10) + Ligne(4) + Chr(13) + Chr(10) + Ligne(5) + Chr(13) + Chr(10) _ + Ligne(6) + Chr(13) + Chr(10) + Ligne(7) + Chr(13) + Chr(10) + Ligne(8) + Chr(13) + Chr(10) + Ligne(9) + Chr(13) + Chr(10) + Ligne(10) + Chr(13) + Chr(10) _ + Ligne(11) + Chr(13) + Chr(10) + Ligne(12) + Chr(13) + Chr(10) + Ligne(13) + Chr(13) + Chr(10) + Ligne(14) + Chr(13) + Chr(10) + Ligne(15) + Chr(13) + Chr(10) _ + Ligne(16) + Chr(13) + Chr(10) + Ligne(17) + Chr(13) + Chr(10) + Ligne(18) + Chr(13) + Chr(10) + Ligne(19) + Chr(13) + Chr(10) + Ligne(20) + Chr(13) + Chr(10) _ + Ligne(21) + Chr(13) + Chr(10) + Ligne(22) + Chr(13) + Chr(10) + Ligne(23) + Chr(13) + Chr(10) + Ligne(24) + Chr(13) + Chr(10) + Ligne(25) & " - " & DateTime.Now) Next Me.nnn 'Phase 2 : Lecture et enregistrement dans le tampon du problème NumeroProb dont la correction est validée. 'Lecture de 25 lignes du problème For Me.n = 1 To 25 Ligne(Me.n) = monStreamReader.ReadLine() Next Me.n 'Lecture des lignes du problème affiché à l'écran avec ou sans correction Ligne(1) = TextBoxNum.Text Ligne(2) = TextBoxName.Text Ligne(6) = TextBoxDate.Text Ligne(7) = TextBoxPrix.Text Ligne(9) = TextBoxSource.Text Ligne(18) = TextBoxEnonce.Text Ligne(19) = TextBoxNbPieces.Text Ligne(21) = Replace(RichTextBoxSolution.Text, Chr(10), " ") 'supprime les retours à la ligne Ligne(25) = "UTF32-8 FR" 'enregistre les 25 lignes monStreamWriter.WriteLine(Ligne(1) + Chr(13) + Chr(10) + Ligne(2) + Chr(13) + Chr(10) + Ligne(3) + Chr(13) + Chr(10) + Ligne(4) + Chr(13) + Chr(10) + Ligne(5) + Chr(13) + Chr(10) _ + Ligne(6) + Chr(13) + Chr(10) + Ligne(7) + Chr(13) + Chr(10) + Ligne(8) + Chr(13) + Chr(10) + Ligne(9) + Chr(13) + Chr(10) + Ligne(10) + Chr(13) + Chr(10) _ + Ligne(11) + Chr(13) + Chr(10) + Ligne(12) + Chr(13) + Chr(10) + Ligne(13) + Chr(13) + Chr(10) + Ligne(14) + Chr(13) + Chr(10) + Ligne(15) + Chr(13) + Chr(10) _ + Ligne(16) + Chr(13) + Chr(10) + Ligne(17) + Chr(13) + Chr(10) + Ligne(18) + Chr(13) + Chr(10) + Ligne(19) + Chr(13) + Chr(10) + Ligne(20) + Chr(13) + Chr(10) _ + Ligne(21) + Chr(13) + Chr(10) + Ligne(22) + Chr(13) + Chr(10) + Ligne(23) + Chr(13) + Chr(10) + Ligne(24) + Chr(13) + Chr(10) + Ligne(25) & " - " & DateTime.Now) 'Phase 3 : Lecture et enregistrement dans le tampon des problèmes de Numero Prob +1 à DerNum For Me.nnn = NumeroProb + 1 To DerNum 'Lecture de 25 lignes de chaque problème For Me.n = 1 To 25 Ligne(Me.n) = monStreamReader.ReadLine() Next Me.n 'enregistre les 25 lignes monStreamWriter.WriteLine(Ligne(1) + Chr(13) + Chr(10) + Ligne(2) + Chr(13) + Chr(10) + Ligne(3) + Chr(13) + Chr(10) + Ligne(4) + Chr(13) + Chr(10) + Ligne(5) + Chr(13) + Chr(10) _ + Ligne(6) + Chr(13) + Chr(10) + Ligne(7) + Chr(13) + Chr(10) + Ligne(8) + Chr(13) + Chr(10) + Ligne(9) + Chr(13) + Chr(10) + Ligne(10) + Chr(13) + Chr(10) _ + Ligne(11) + Chr(13) + Chr(10) + Ligne(12) + Chr(13) + Chr(10) + Ligne(13) + Chr(13) + Chr(10) + Ligne(14) + Chr(13) + Chr(10) + Ligne(15) + Chr(13) + Chr(10) _ + Ligne(16) + Chr(13) + Chr(10) + Ligne(17) + Chr(13) + Chr(10) + Ligne(18) + Chr(13) + Chr(10) + Ligne(19) + Chr(13) + Chr(10) + Ligne(20) + Chr(13) + Chr(10) _ + Ligne(21) + Chr(13) + Chr(10) + Ligne(22) + Chr(13) + Chr(10) + Ligne(23) + Chr(13) + Chr(10) + Ligne(24) + Chr(13) + Chr(10) + Ligne(25) & " - " & DateTime.Now) Next Me.nnn 'Fermeture du StreamReader monStreamReader.Close() 'Fermeture du StreamWriter monStreamWriter.Close() 'Code exécuté en cas d'exception Catch ex As Exception MessageBox.Show(ex.Message & "Stack Trace: " & vbCrLf & ex.StackTrace)) End Try 'Phase 4 : remplacer le fichier source par le contenu du fichier tampon ' à écrire End Sub
En vous remerciant pour votre aide.
A vous lire
Partager