Hallo zusammen,
ich muß des öfteren aus recht größen Textdateien bestimmte Zeilen löschen. Dies mache ich z.Zt. so
{leerzeilen löschen}
Delphi-Quellcode:
Stringliste.loadfromfile('Testdatei');
..
for i:=Stringliste.count-1 downto 0 do
if length(Stringliste[i])=0 then Stringliste.delete(i);
Hat man mehr als 1 Mio Zeilen, kann das schon dauern. Darum meine Frage, wie kann ich das optimieren?
Ein etwas besseres Laufzeitverhalten habe ich mit
Delphi-Quellcode:
for i:=Stringliste.count-1 downto 0 do begin
if length(Stringliste[i])>0 then stringlist2.insert(0,stringlist[i]);
Stringlist.delete(i);
end;
(das Verhältnis ist etwa 6:5)
Als untauglich hat sich erwiesen:
Delphi-Quellcode:
p:=pos(#13#10#13#10,string);
while p>0 do begin
delete(string,p,2);
p:=posex(#13#10#13#10,string,p-1);
end
Da beim TStringlist.Delete letztlich nur 3 Pointer verschoben werden erhoffe ich mir von einer Pointerliste auch keine große Verbesserung.
Habt Ihr noch eine Idee wie ich da etwas Tempo machen kann?
Gruß
K-H