En passant par un TFileStream ca serait largement plus simple pour traiter la progression et la récupération des données du fichier (vu que ton fichier à l'air d'avoir toujours la même structure (taille de ligne identique)
Tu fais la structure dans ce style
puis tu récupères les données de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Type TMaLigne = record Code : Array[1..3] of Char; Texte1 : Array[1..52] of char; Texte2 : Array[1..20] of char; CRLF : array [1..2] of char; // à ne pas enlever car dans ton fichier exemple les lignes finissent par un CRLF ^^ end;
Bien sur c'est à adapter selon le code et j'ai un doute juste sur le Length(MaLigne) faut peut être metttre Size(MaLigne) à la place
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 Var FFile : TFileStream; MaLigne : TMaligne; sText : String; begin FFile := TFileStream.Create(MonFichier,fmOpenRead); Try FFile.Seek(0,soFromBegining); While (FFile.Position + Length(MaLigne) < FFile.Size do begin FFile.ReadBuffer(MaLigne,Length(MaLigne)); // Puis suffit de récuper les données et les mette comme tu veux // sText sert d'exemple sText := String(Maligne.Code) + ' - ' + String(Maligne.Texte1); ProgressBar1.Position := FFile.Position * 100 Div FFile.Size; end; finally FFile.Free; end; end;
Partager