AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 80 MB Datei - doppelte Zeilen entfernen

80 MB Datei - doppelte Zeilen entfernen

Ein Thema von capo · begonnen am 17. Jan 2007 · letzter Beitrag vom 18. Jan 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#1

80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 09:29
Hallo,
ich muss bei einer 80 MB großen Datei alle doppelten un leeren Zeilen entfernen
So dauert das eine Ewigkeit:
Delphi-Quellcode:
if FileExists('logfile.txt') then
begin
  FWords := THashedStringList.Create;
  application.ProcessMessages;
  FWords.LoadFromFile(
    ExtractFilePath(Application.ExeName) + 'logfile.txt');
  lv.Items.Count := FWords.Count;
  DeleteDuplicates(Fwords);
gruss vom capo
Hotte
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 09:33
Wie sieht das Format einer Zeile aus?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 09:37
Besorg dir AQTime und such die Hotspots der verbratenen Zeit
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 09:45
Hallo, einen Ansatz dazu findest Du hier
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 10:04
Zitat von capo:
So dauert das eine Ewigkeit:
Das kann ich mir vorstellen...

Hast Du 160MB Platz?

Dann so:
Delphi-Quellcode:
var
  fd1,fd2 : Textfile;
  S,Last : string;
begin
  assignfile(fd1,'logfile.txt');
  assignfile(fd2,'logfile.neu');
  reset(fd1);
  rewrite(fd2);
  Last := '';
  while not(eof(fd1)) do
    begin
      readln(fd1,S);
      if (trim(S)<>'') and (S <> LAST) then
        writeln(fd2,S);
      Last := S;
    end;

  Closefile(fd2);
  Closefile(fd1);
  deletefile(fd1);
  rename(fd2,'logfile.txt');
end;
Untested...QuickandDirty.. NoErrorcheck

Schreibmal wieviel schneller es war!

Frank
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 10:31
Hi,
wie arbeitet denn die Methode DeleteDuplicates?
Und wie meinst Du denn doppelte Zeilen? Möchtest Du hier Zeilen die zweimal hintereinander stehen entfernen? Oder möchstest Du die Datei in disjunkte Zeilen zerlegen (also eine Zeile wird nur einmal in die Liste übernommen, egal wie oft und wo sie in der Datei vorkommt)?

Gruß Der Unwissende
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 11:53
Hallo
danke für eure Antworten.
Die zeilen können auch 2 - x mal vorkommen, habe meine Frage falsch formulieren.
Das hier scheint dann dafür nicht das richtige zu sein, oder.
Delphi-Quellcode:
var
  fd1,fd2 : Textfile;
  S,Last : string;
begin
  assignfile(fd1,'logfile.txt');
  assignfile(fd2,'logfile.neu');
  reset(fd1);
  rewrite(fd2);
  Last := '';
  while not(eof(fd1)) do
    begin
      readln(fd1,S);
      if (trim(S)<>'') and (S <> LAST) then
        writeln(fd2,S);
      Last := S;
    end;

  Closefile(fd2);
  Closefile(fd1);
  deletefile(fd1);
  rename(fd2,'logfile.txt');
end;
hier habe ich dann auch noch einen fehler:
Zitat:
[Fehler] Unit1.pas(47): Inkompatible Typen: 'String' und 'Text'
deletefile(fd1);
Hotte
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 12:01
Zitat:
deletefile(fd1);
DeleteFile möchte den Dateinamen:
deletefile('logfile.txt');
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 12:01
Sorry doch, dass ist genau das richtige...

Muss nur
delete(fd1); heißen..

Frank
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: 80 MB Datei - doppelte Zeilen entfernen

  Alt 17. Jan 2007, 12:34
Hallo
so mach ich das nun aber es sind immer noch doppelte Einträge vorhanden.
Also dachte ich mir lass ich das ganze nocheinmal mit der neuen Datei durchlaufen, klappt aber dennoch nicht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fd1,fd2 : Textfile;
  S,Last : string;
begin
  assignfile(fd1,'C:\logfile.txt');
  assignfile(fd2,'C:\logfile.neu');
  reset(fd1);
  rewrite(fd2);
  Last := '';
  while not(eof(fd1)) do
    begin
      readln(fd1,S);
      if (trim(S)<>'') and (S <> LAST) then
        writeln(fd2,S);
      Last := S;
    end;

  Closefile(fd2);
  Closefile(fd1);
  deletefile('logfile.txt');
rename(fd1,'C:\logfile.txt');
end;
gruss capo
Hotte
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz