Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#26

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 18. Jan 2007, 07:29
Zitat von capo:
Logfile.txt heisst die Datei nur weil ich den Code aus einem anderen Programm von mir übernommen habe.
Es sind Adressen um die es geht.
gruss capo
Oh mann

Du läßt uns hier rumrätzeln, weil Du Deine Frage so schwammig gestellt hast...

Na was den nu?

Sind die doppelten jetzt über die Datei verteilt oder liegen die hintereinander?

Wenn es 80MB sind und es sich dabei um Adressen handelt sind das bei typischer Adressgröße ca. 500.000-700.000 Adressen...(Zeilen), richtig?

Dann vielleicht sowas...

Delphi-Quellcode:
type
   TSorter = Record
              CRC : longint;
              Zeile : longint;
            end;
var
   Sort : array of TSorter;
   Count : integer;
   S : String;
   i : integer;
begin
  assignfile(fd1,'Adressen.txt');
  reset(fd1);
  Count := 0;
  Setlength(Sort,500000);
  while not(eof(fd1)) do
    begin
      readln(fd1,S);
      if length(Sort) > Count+1
        then begin
               Sort.CRC := CRC4(S); // Oder auch den HD5
               Sort.Zeile := Count;
      
             end
        else begin
               Setlength(Sort,Count + 10000); // Je größer die Zahl, desto schneller...
             end;

      inc(Count)
    end;
  Closefile(fd1);

  QSort(Sort,0,Count); // Gibt es von mir hier eine Kombo...

  // Den rest überlasse ich Dir...
  // Doppelte aus dem Array löschen...
  // Dann nur die Zeilen in die andere Dateikopieren, wenn Count in sort.Zeile
   
end;
Frank

PS.: Und wenn es dann noch nicht schnell genug ist... Zip die Adress-Datei zusammen und leg sie irgendwo hin...
Denn das Antworten hier dauert jetzt schon länger als eine Konvertierung..
  Mit Zitat antworten Zitat