Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zeilen aus datei löschen (https://www.delphipraxis.net/24765-zeilen-aus-datei-loeschen.html)

Pseudemys Nelsoni 25. Jun 2004 19:14


Zeilen aus datei löschen
 
hallo hat jemand einen code parat mit dem ich eine bestimmte zeile in einer txt datei löschen kann? (nonvcl).

ich muss jede zeile nach einem bestimmtem text durchsuche, wenn dort der text vorkommt soll die zeile gelöscht werden. Aber wie?

Nicodius 25. Jun 2004 19:24

Re: Zeilen aus datei löschen
 
in ne TList reinladen?

dann mit ner schleife durchgehen dasm üsste auch ohne code gehen *g*

Pseudemys Nelsoni 25. Jun 2004 19:39

Re: Zeilen aus datei löschen
 
wie gesagt, nonVCL :-D

Luckie 25. Jun 2004 20:50

Re: Zeilen aus datei löschen
 
Les sie zeilenweise ein und schreib nur, wenn das Kriterium zu trifft. Etwas mehr eigene Kreativität bitte.

Pseudemys Nelsoni 26. Jun 2004 16:16

Re: Zeilen aus datei löschen
 
schreiben? ich möchte ja eine zeile löschen, wenn ich da z.b "" (also nichts) schreibe hab ich da dann ne leerezeile drin... :cry:

Christian Seehase 26. Jun 2004 16:24

Re: Zeilen aus datei löschen
 
Moin Pseudemys Nelsoni,

Zitat:

Zitat von Luckie
...und schreib nur, wenn das Kriterium zu trifft.

Zitat:

Zitat von Pseudemys Nelsoni
schreiben? ich möchte ja eine zeile löschen,

...und schreib nicht nur, wenn das Kriterium zu trifft.

oder

...und schreib nur, wenn das Kriterium nicht zu trifft.

;-)

StefanDP 26. Jun 2004 16:24

Re: Zeilen aus datei löschen
 
du sollst auch dann nicht "nichtS" schreiben sondern "nichT" schreiben!

Pseudemys Nelsoni 26. Jun 2004 16:38

Re: Zeilen aus datei löschen
 
hallo leute,

danke christian :mrgreen:

@stefan:

die datei existiert doch schon auf meinem pc und da ist bereits text drinnen(!) und daraus muss ich ja löschen... also durch "Nichts schreiben" krieg ich die zeile aus der datei auch nich weg denke ich mal :mrgreen: :gruebel:

Chewie 26. Jun 2004 16:40

Re: Zeilen aus datei löschen
 
Du liest die Datei ein und leerst dann die Datei auf der Platte. Dann schreibst du die Daten wieder in die Datei, das, was du löschen willst, schreibst du dann einfach nicht.

Christian Seehase 26. Jun 2004 16:42

Re: Zeilen aus datei löschen
 
Moin Pseudemys Nelsoni,

oder, um einen Datenverlust zu vermeiden, kannst Du die neue, gekürzte Datei, auch erst einmal temporär anlegen.
Wenn diese fertig erstellt ist, dann die alte löschen, und die neue entsprechend umbenennen.

StefanDP 26. Jun 2004 16:47

Re: Zeilen aus datei löschen
 
Zitat:

Zitat von Chewie
Du liest die Datei ein und leerst dann die Datei auf der Platte. Dann schreibst du die Daten wieder in die Datei, das, was du löschen willst, schreibst du dann einfach nicht.

so hab ichs gemeint!

halt mit backup

Pseudemys Nelsoni 26. Jun 2004 16:49

Re: Zeilen aus datei löschen
 
Zitat:

Du liest die Datei ein und leerst dann die Datei auf der Platte. Dann schreibst du die Daten wieder in die Datei, das, was du löschen willst, schreibst du dann einfach nicht.
Hallo Chewie,

Kannst du mir sagen wo ich sie am besten reinlade? Wie gesagt das ganze ist ohne VCL und daher habe ich sowas wie stringlist nicht 8)

Zitat:

oder, um einen Datenverlust zu vermeiden, kannst Du die neue, gekürzte Datei, auch erst einmal temporär anlegen.
Wenn diese fertig erstellt ist, dann die alte löschen, und die neue entsprechend umbenennen.
Hallo Christian,

auch eine gute Idee, mal sehen wie ich das alles per api realisiere :mrgreen:


Danke euch beiden schonmal. :thuimb:

Chewie 26. Jun 2004 17:04

Re: Zeilen aus datei löschen
 
Nimm irgendeinen Puffer, der groß genug ist, um die ganze Datei zu speichern. Am einfachsten dürfte ein Array of Byte sein.

Luckie 27. Jun 2004 09:41

Re: Zeilen aus datei löschen
 
Habe ich mich denn so unverständlich ausgedrückt? :shock: Etwas Pseudocode, da ich kein Delphi hier habe:
Delphi-Quellcode:
var
  F_Old, F_New: TextFile;
  FilenameOld, FilenameNew: String;
  s: String;
begin
  if FileExists(FilenameOld) then
  begin
    AssignFile(F_Old, FilenameOld);
    Reset(F_Old);
    AssignFile(F_New, FilenameNew);
    Rewrite(F_New)
    while not EOF(F_Old) do
    begin
      readln(F, s);
      if s <> '' then
        writeln(F_NEW, s);
    end;
    CloseFile(F_Old);
    CloseFile(F_New);
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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