Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Textdateien bestimmte Zeile löschen. (https://www.delphipraxis.net/184270-textdateien-bestimmte-zeile-loeschen.html)

M1ndgr4ve 13. Mär 2015 12:19

Textdateien bestimmte Zeile löschen.
 
Guten Tag

Bei meinem Programm speichert man eine TreeView Konfiguration als Textdatei ab. Die namen der gespeicherten Dateien stehen in einer ComboBox zum Abruf bereit.
Ich möchte nun die gespeicherten Dateien auch wieder Löschen können per Knopfdruck. Bzw. das wären ja dann Textzeilen die gelöscht werden.
Ich habe schon echt viel ausprobiert und kriegs einfach nicht hin das man eine beliebig ausgewählte Zeile/Datei löschen kann.
Kann mir jemand helfen?

Greez

p80286 13. Mär 2015 12:32

AW: Textdateien bestimmte Zeile löschen.
 
Zitat:

Zitat von M1ndgr4ve (Beitrag 1293366)
Ich habe schon echt viel ausprobiert und kriegs einfach nicht hin das man eine beliebig ausgewählte Zeile/Datei löschen kann.

Und was hast du ausprobiert?

Delphi-Quellcode:
mystringlist:=tstringlist.create;
mystringlist.LoadfromFile('MeineDatei');
if myStringlist.Indexof('gesuchterString)>-1 then
  myStringlist.Delete(myStringlist.Indexof('gesuchterString));
myStringlist.Savetofile(MeineDatei');
myStringlist.Free;
das wäre z.B. eine Möglichkeit
oder du kopierst alle Zeilen aus einer Textdatei in eine andere Textdatei wenn die gelesene Zeile nicht gleich dem zu löschenden Wert ist, oder......

Gruß
K-H

Der schöne Günther 13. Mär 2015 12:34

AW: Textdateien bestimmte Zeile löschen.
 
Stimmt,
Delphi-Quellcode:
TStrings
ist eigentlich noch besser. Ich hätte es spontan über String-Arrays gemacht:

Delphi-Quellcode:
uses System.IoUtils, System.Types;

procedure löscheZeile(const fileName: String; const deleteLine: Integer);
var
   originalLines:   TStringDynArray;
   newLines:      TStringDynArray;

   originalLineIndex:   Integer;
   newLineIndex:      Integer;
begin
   originalLines := TFile.ReadAllLines(fileName);

   SetLength(newLines, Length(originalLines) - 1);
   newLineIndex := 0;
   for originalLineIndex := Low(originalLines) to High(originalLines) do
      if (originalLineIndex <> deleteLine) then begin
         newLines[newLineIndex] := originalLines[originalLineIndex];
         Inc(newLineIndex);
      end;

   TFile.WriteAllLines(fileName, newLines);
end;

BadenPower 13. Mär 2015 12:41

AW: Textdateien bestimmte Zeile löschen.
 
Zitat:

Zitat von M1ndgr4ve (Beitrag 1293366)
Bei meinem Programm speichert man eine TreeView Konfiguration als Textdatei ab. Die namen der gespeicherten Dateien stehen in einer ComboBox zum Abruf bereit.
Ich möchte nun die gespeicherten Dateien auch wieder Löschen können per Knopfdruck. Bzw. das wären ja dann Textzeilen die gelöscht werden.
Ich habe schon echt viel ausprobiert und kriegs einfach nicht hin das man eine beliebig ausgewählte Zeile/Datei löschen kann.
Kann mir jemand helfen?

Diese Beschreibung Deines Vorhabens ist wirr, wie immer.

Es stellt sich zunächst die Frage was eigentlich gelöscht werden soll.

Die einzelnen Konfigurationsdateien der Treeview auf der Festplatte oder nur der Eintrag (also der Dateiname) in der ComboBox?

Der schöne Günther 13. Mär 2015 12:50

AW: Textdateien bestimmte Zeile löschen.
 
Ich habe die Beschreibung ehrlich gesagt auch nicht verstanden, aber immerhin die Überschrift. :stupid:

p80286 13. Mär 2015 12:51

AW: Textdateien bestimmte Zeile löschen.
 
[OT]
Zitat:

Zitat von BadenPower (Beitrag 1293369)

Diese Beschreibung Deines Vorhabens ist wirr, wie immer.

Kommt darauf an wo man arbeitet, da ist man manchmal einiges gewohnt.
Es gibt Arbeitgeber die brauchen Gedankenleser und Hellseher, keine Programmierer!
:glaskugel:
Gruß
K-H
[/OT]

himitsu 13. Mär 2015 12:59

AW: Textdateien bestimmte Zeile löschen.
 
Delphi-Quellcode:
procedure löscheZeile(const FileName: String; const DeleteLine: Integer);
var
  Lines: TArray<String>;
begin
  Lines := TFile.ReadAllLines(FileName);
  Delete(Lines, DeleteLine);
  TFile.WriteAllLines(FileName, Lines);
end;
:stupid:

Und dann natürlich noch ReadLn und WriteLn, wobei man die eine Zeile überspringt. (nicht speichert)


Zitat:

Zitat von BadenPower (Beitrag 1293369)
Diese Beschreibung Deines Vorhabens ist wirr, wie immer.

Klang teilweise so, als wenn in den Tree-Zeilen Dateinamen stehen und man die Dateien löschen will,
drum sagte ich mir "nee, keine Lust das jetzt zu verstehen .... ich geh erstma Mittag essen" :roll:

Der schöne Günther 13. Mär 2015 13:01

AW: Textdateien bestimmte Zeile löschen.
 
Bei ihm steht aber XE6. Nicht XE7 :lol:

himitsu 13. Mär 2015 13:03

AW: Textdateien bestimmte Zeile löschen.
 
Werbung :zwinker:

Aber ein Array-Delete hatte ich mir seit vielen Jahren eh schon selber gebaut
und seit 2009 auch als
Delphi-Quellcode:
TArray<string>.Delete(Lines, DeleteLine);
. :angel:

Perlsau 13. Mär 2015 13:22

AW: Textdateien bestimmte Zeile löschen.
 
Zitat:

Zitat von M1ndgr4ve (Beitrag 1293366)
Kann mir jemand helfen?Greez

Du meinst jetzt wirklich helfen, wie man es dort vor einigen Tagen bereits versucht hat?

Wieso erlenst du nicht erst einmal die Grundlagen der Delphi-Programmierung, indem du das eine und/oder andere Tutorial durcharbeitest? Dabei würdest du nämlich ein grundlegendes Verständnis für Delphi und die verfügbaren Komponenten entwickeln. Einfach so draufloslegen und nach zwei drei Wochen glauben, man könne programmieren, geht mit Sicherheit frontal in die Hose :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Seite 1 von 4  1 23     Letzte »    

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