AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi aus 480 MB txt Datei, bestimmte Zeilen löschen lassen...
Thema durchsuchen
Ansicht
Themen-Optionen

aus 480 MB txt Datei, bestimmte Zeilen löschen lassen...

Ein Thema von LuckyStrike4life · begonnen am 5. Feb 2004 · letzter Beitrag vom 5. Feb 2004
Antwort Antwort
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#1

Re: aus 480 MB txt Datei, bestimmte Zeilen löschen lassen...

  Alt 5. Feb 2004, 13:36
Hallo!

3 Varianten sind möglich:
1. die zu löschenden Zeilen haben alle denselben Inhalt. Dann sieht das Ganze so aus:

Delphi-Quellcode:
const loeschen = ' .00 .00 -300.00 0';

var tin, tout:Textfile;
    lese:String;
begin
  AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
  AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
  Reset(tin);
  Rewrite(tout);
  while not Eof(tin) do
  begin
    ReadLn(tin, lese);
    if lese <> loeschen then // Vergleich der kompletten Zeile
      writeln(tout,lese);
  end;
  CloseFile(tout);
  CloseFile(tin);
end;
Deine Beispieldaten sind ja so aufgebaut.

2. die zu löschenden Zeilen haben unterschiedlichen Inhalt, aber die Spalten sind fest definiert. Dann sieht das Ganze so aus:

Delphi-Quellcode:
const loeschen = '-300.00';
      loeschpos=32; // ggf. auszählen!
      
var tin, tout:Textfile;
    lese:String;
begin
  AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
  AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
  Reset(tin);
  Rewrite(tout);
  while not Eof(tin) do
  begin
    ReadLn(tin, lese);
    if Copy(lese,loeschpos,Length(loeschen)) <> loeschen then // Vergleich der betreffenden Spalten
      writeln(tout,lese);
  end;
  CloseFile(tout);
  CloseFile(tin);
end;

3. die zu löschenden Zeilen enthalten das "-300.00" an unterschiedlichen Stellen, aber dieser Wert kommt in den übrigen Zeilen garantiert nicht vor. Dann sieht das Ganze so aus:

Delphi-Quellcode:
const loeschen = '-300.00';
      
var tin, tout:Textfile;
    lese:String;
begin
  AssignFile(tin, 'c:\kai.txt'); // Name der Datei ist kai, lasse sie damit Laden
  AssignFile(tout, 'c:\kaineu.txt'); // gebe hier Name und Pfad an, wo das Resultat dann hin soll
  Reset(tin);
  Rewrite(tout);
  while not Eof(tin) do
  begin
    ReadLn(tin, lese);
    if Pos(loeschen,lese) <> 0 then // KO-Zeichenfolge suchen
      writeln(tout,lese);
  end;
  CloseFile(tout);
  CloseFile(tin);
end;
Sollte keines der Kritereien erfüllt sein, mußt Du eben die Zeile zerlegen und dann den passenden Abschnitt (hier 3. Bereich) vergleichen.


Allerdings gebe ich eines zu bedenken: Auch wenn es sehr ressourcenfressend ist, nach Windows-Norm muss die komplette Datei in den Speicher. Wozu gibt es das Pagefile - auch wenn das das System ausbremst Ich bevorzuge allerdings auch die klassische Methode mit zeilenweiser Verarbeitung.

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz