Bonjour,
Je fais un logiciel pour traiter des fichiers qui peuvent être lourds (2-4 mo), en ce moment, mon fichier fait 177ko et c'est déjà la catastrophe. Le fichier est chargé et traité (les lignes qui comment par un # ou un espace sont ignorées) et mise dans un listbox. Sur un fichier de 177ko (5673 lignes), le chargement prend environ 2 secondes. C'est acceptable je trouve. Le problème, c'est qu'il y a aussi la possibilité de fusionner deux fichiers, dès lors, le logiciel cherche s'il y a des doublons, si oui, il n'ajoute pas la ligne concernée dans le listbox. Pour 5673 lignes, ça prend 11 secondes ! Il y a donc deux problèmes :
-La recherche de doublons est très lente
-Le chargement finit par planter pour les trop gros fichiers
J'ai entendu parler des Streams qui pourraient régler mes problèmes, mais je ne comprends pas le fonctionnement de celui-ci. Pourriez-vous m'aider ?
Merci d'avance,
bibi26
Le code pour rechercher un doublon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 AssignFile(P,extractFilePath(application.exename)+'hosts'); Reset(P); while not EOF(P) do begin ReadLn(P, ResultT); if (leftstr(ResultT, 1) <> '#') and (leftstr(ResultT, 1) <> ' ') then if (HostsC.IndexOf(ResultT) = -1) then begin New := StringReplace(ResultT, #9, ' ',[rfReplaceAll, rfIgnoreCase]); Hosts.Items.Add(New); HostsC.Add(ResultT); end; end; CloseFile(P);
Partager