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);