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..