![]() |
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 |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Delphi-Quellcode:
das wäre z.B. eine Möglichkeit
mystringlist:=tstringlist.create;
mystringlist.LoadfromFile('MeineDatei'); if myStringlist.Indexof('gesuchterString)>-1 then myStringlist.Delete(myStringlist.Indexof('gesuchterString)); myStringlist.Savetofile(MeineDatei'); myStringlist.Free; 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 |
AW: Textdateien bestimmte Zeile löschen.
Stimmt,
Delphi-Quellcode:
ist eigentlich noch besser. Ich hätte es spontan über String-Arrays gemacht:
TStrings
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; |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
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? |
AW: Textdateien bestimmte Zeile löschen.
Ich habe die Beschreibung ehrlich gesagt auch nicht verstanden, aber immerhin die Überschrift. :stupid:
|
AW: Textdateien bestimmte Zeile löschen.
[OT]
Zitat:
Es gibt Arbeitgeber die brauchen Gedankenleser und Hellseher, keine Programmierer! :glaskugel: Gruß K-H [/OT] |
AW: Textdateien bestimmte Zeile löschen.
Delphi-Quellcode:
:stupid:
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; Und dann natürlich noch ReadLn und WriteLn, wobei man die eine Zeile überspringt. (nicht speichert) Zitat:
drum sagte ich mir "nee, keine Lust das jetzt zu verstehen .... ich geh erstma Mittag essen" :roll: |
AW: Textdateien bestimmte Zeile löschen.
Bei ihm steht aber XE6. Nicht XE7 :lol:
|
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:
. :angel:
TArray<string>.Delete(Lines, DeleteLine);
|
AW: Textdateien bestimmte Zeile löschen.
Zitat:
![]() 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: |
AW: Textdateien bestimmte Zeile löschen.
Danke an alle die mir helfen. Jetz hab ich wieder was woran ich rumbasteln Kann bis es klappt.
Ich weis nicht was an meiner Frage nicht verständlich sein soll. Wenn ich eine bestimmte Zeile löschen möchte ist es doch naheliegend das ich nicht nur den ComboBox eintrag löschen will oder? Und Perlsau? Ich arbeite mit einem Buch zusammen wo ich sehr wohl etwas daraus lerne nur ist da nicht alles beschrieben. Mein Chef lässt mich Eiskalt auflaufen ich muss mir das selber beibringen und ich denke dieses Forum hier ist unter anderem auch für das gedacht. Wissen teilen. Wenn ihr kein Bock habt zu Antworten dann tuts auch nicht. Stört mich nicht. Bis jetz hab ichs in die Richtung versucht. Natürlich wäre das lange nicht alles. Hab das ganze wieder übern ganzen Code verteilt und ausprobiert^^ procedure LoescheZeileAusDatei(sDatei: String; iZeile: Integer); var sl: TStringList; begin sl := TStringList.Create; try sl.LoadFromFile(sDatei); sl.Delete(iZeile -1); sl.SaveToFile(sDatei); finally sl.Free; end; end; Peace |
AW: Textdateien bestimmte Zeile löschen.
Delphi-Quellcode:
Jetzt hast Du die entsprechende Zeile in der Datei gelöscht. Wenn ich jetzt richtig verstanden habe, dann ist es das, was Du wolltest?
procedure LoescheZeileAusDatei(sDatei: String; iZeile: Integer);
var sl: TStringList; begin sl := TStringList.Create; try sl.LoadFromFile(sDatei); sl.Delete(iZeile -1); sl.SaveToFile(sDatei); finally sl.Free; end; end; Und ja, wir wollen Dir helfen, wenn wir wissen womit. Zitat:
Zitat:
Aber scheinbar willst Du doch nicht DIESE Dateien löschen, sondern nur eine Zeile in einer weiteren Datei löschen. |
AW: Textdateien bestimmte Zeile löschen.
Ok ich gebe mir Mühe in Zukunft meine Fragen verständlicher zu formulieren.
Den Code den ich gepostet habe ist nur mein ansatz. Nur Leider funktioniert der trotzdem nicht ^^ |
AW: Textdateien bestimmte Zeile löschen.
Der Code funktioniert definitiv und macht genau das, was er soll,
wenn man ihn ordentlich füttert: sDatei = Dateiname, am Besten inkl. absoluter Pfadangabe iZeile = zu löschende Zeile -> 1-indiziert, also 1. Zeile = Index 1 Wenn er nicht funktioniert: Dann fehlt von dir die Fehlerbeschreibung. (was geht nicht, bzw. was passiert stattdessen und wie wurde der "Ansatz" nun endgültig implementiert) |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Zitat:
Was funktioniert denn nicht??? |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
![]() Darauf hattest du ![]() Das ist nicht böse gemeint, sondern ein wohlgemeinter Hinweis, daß du so nicht weit kommen wirst. Du kannst hier noch so viele Fragen stellen: Wenn dir die Basiskenntnisse fehlen, wirst du die Antworten weiterhin nicht verstehen. Daher mein Rat, doch mal ein zwei gute Tutorials durchzuarbeiten, um dir diese Basiskenntnisse anzueignen, bevor du Anwendungen entwickelst, die in einer Produktionsumgebung (dein Arbeitsplatz) zuverlässig arbeiten sollen. Du tust dir damit letztendlich selbst einen großen Gefallen, wogegen du mit irgendwelchen Murks-Programmen, die mal funktionieren und mal nicht, deinen Arbeitsplatz wohl eher gefährdest. |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Also was möchtest Du erreichen, und vergiss bitte nicht wir wissen nicht was Du im Kopf hast, was Dir selbstverständlich erscheint müssen wir nicht unbedingt wissen. Gruß K-H |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
|
AW: Textdateien bestimmte Zeile löschen.
Wenn ihr sagt das muss Funktionieren dann liegt das Problem vermutlich hier^^
procedure TForm1.LöschenClick(Sender: TObject); Dann macht der Button nicht das was er sollte. Bin auch da immerwieder am rumprobieren und Löschen und wieder von vorne... |
AW: Textdateien bestimmte Zeile löschen.
Und was steht in dieser Methode?
|
AW: Textdateien bestimmte Zeile löschen.
Ja stimmt es gibt sicherlich viele Grundlagen von denen ich noch gar nichts weis.
Bin ja auch nur ein Praktikant. Doch ich weis durchaus wie ich mit einem Pc umzugehen habe. Von wegen gefährdung meines Arbeitsplatzes. Und mir ist klar wofür eine ComboBox gedacht ist... Alles was ich wissen wollte ist wie ihr das machen würdet. Aber egal jetz ich hab wichtigeres zu tun als über meine Kompetenzen im Umgang mit Delphi zu diskutieren. |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Du präsentierst uns eine Prozedure-Deklaration. Dem Namen nach zu urteilen und schon dies müssen wir nun selbst erraten, handelt es sich um die Zuweisung zum OnClick-Ereignis eines Buttons Names "Löschen". Aber was in der Prozedure gemacht wird, dass verschweigst Du uns. Der einzige der wissen kann, was in dieser Prozedur steht, das bist Du. Wie sollen wir Dir helfen? |
AW: Textdateien bestimmte Zeile löschen.
@mkinzler
Momentan eben gar nix mehr da ich gar nicht mehr weis wo ich ansetzen soll. |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Nun musst Du in Deinem Buttonereignis diese Funktion mit den notwendigen Parametern -> Dateiname und Zeile aufrufen, damit sie auch ausgeführt wird. |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Komplett fertige Programme/Funktionen gibt es in der Jobböse zu erwerben. Aber da du es nicht für nötig hälst uns alle nötigen Informationen zu geben, kann dir auch keiner helfen, da keiner weiß was du willst, bzw. was du falsch machst. |
AW: Textdateien bestimmte Zeile löschen.
Ja weil ich die nötigen Informationen selber nicht hab !!
Sonst wäre ich ja wohl nicht hier und würde fragen stellen. Was man an "Textdateien bestimmte Zeile löschen" nicht versteht weis ich auch nicht... Mag jetz auch gar nicht mehr diskutieren weil anscheinend ist hier nicht das problem das mich niemand versteht sondern das ihr alle Fachchinesisch erwartet und da kann ich halt jetz nicht mitmachen. |
AW: Textdateien bestimmte Zeile löschen.
Du hast eine Funktion, welche eine Zeile löscht (welche) funktioniert, aber keinen Schimmer, wie man diese aufruft.
Es ist also nichtz das Problem, dass Dir niemnad helfen will, sondern Dir fehlt einfach das notwendige Basiswissen! |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
|
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Die Informationen sind Dein Code, welchen Du bisher programmiert hast und das, was Du erreichen willst. Es ist nicht das Problem, dass Dich keiner verstehen WILL, sondern dass Dich keiner verstehen KANN, weil Du uns nicht mitteilst, wie der Ablauf Deines Programmes aussehen soll. Poste einmal Deinen bisherigen Code und eine EXAKTE Funktionsbeschreibung, was geschehen soll, wenn Du was machst. |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
Das konnten hier doch einige, ohne das ihnen das Lebensglück aus den Händen gleitet. Anfänger tun sich nun einmal schwer, Dinge, die sie erst noch verstehen müssen, formal korrekt zu beschreiben. Anstatt ständig auf den nicht perfekt formulierten Fragen herumzureiten, könnte man sich auch raushalten und so den Anteil der konstruktiven Beiträge erhöhen. Ja, ich hätte es auch machen können. Aber ich bin nun einmal nicht weiser als Du oder manch anderer, der sich seitenlang über Jobdefinitionen auslässt. ;-) Also: Mach dein Lebensglück (oder das Gegenteil, die Hölle) lieber von handfesten Dingen abhängig. Ich war neulich z.B. in einem Hotel, das hatte kein Bier. DAS macht einem das Leben zur Hölle.:stupid: |
AW: Textdateien bestimmte Zeile löschen.
Zitat:
|
AW: Textdateien bestimmte Zeile löschen.
Also ich versuchs nochmal :D
Die TreeView Konfiguration die ich momentan habe speichere ich in einem Textdokument ab. In diesem Textdokument werden dann Zeilen erstellt durch meinen Save vorgang der ja mittlerweile funktioniert. Alles was ich gesaved habe erscheint dann unter dem gespeicherten Dateinamen in der ComboBox, bereit zum auswählen und Laden. Funktioniert auch. Jetz möchte ich das was ich in der ComboBox selektiert habe nicht nur Laden können sondern auch wieder Löschen. Und damit tue ich mich grad sehr schwer. Ich weis selber das es Theoretisch ja einfach wäre, da es ja wie schon oft erwähnt mit den Delphi Grundkenntnissen machbar wäre. Und ich würde euch ja Code schicken wenn ich welchen hätte. Die eine Prozedur habt ihr ja schon gesehn und die sollte ja auch funktionieren. Was jetz nicht geht ist die Prozedur mit dem ButtonClick. Und alles was ich möchte ist ein schubs in die richtige Richtung. Am besten mit Beispiel da das für mich dann viel einfacher ist nachzuvollziehn was das für was ist. Ich habe diese Codes nicht im Kopf und kann sie jederzeit abrufen. Leider nicht mal ungefähr... |
AW: Textdateien bestimmte Zeile löschen.
Also, Du hast eine ComboBox, die aus einer Textdatei gefüllt wird, stimmt das so? Und das ausgewählte Item soll man auch löschen können, was dann zur Folge hat, dass es auch aus der Textdatei verschwinden soll, ist das auch richtig?
|
AW: Textdateien bestimmte Zeile löschen.
Genau ja.
|
AW: Textdateien bestimmte Zeile löschen.
Dann würde ich das ganz einfach so machen:
Delphi-Quellcode:
procedure TDeinForm.LoeschenClick(Sender: TObject);
var idx: integer; begin idx := ComboBox.ItemIndex; if idx > -1 then begin (* Eintrag löschen *) ComboBox.Items.Delete(idx); (* Alle Einträge wieder in Datei zurückschreiben *) ComboBox.Items.SaveToFile(Dateiname); end; end; |
AW: Textdateien bestimmte Zeile löschen.
Die ComboBox (Items) hat eine Delete-Funktion .... die ruft man auf und danach speichert man den Inhalt der ComboBox neu ab.
Außer man hat GUI und Daten getrennt, dann löscht man den Eintrag aus den Daten, speichert Diese und aktualisiert dann die ComboBox. |
AW: Textdateien bestimmte Zeile löschen.
Herzlichen Dank.
Hab immer irgendwas mit erst AssignFile rumgewurschtelt... |
AW: Textdateien bestimmte Zeile löschen.
Funktioniert einwandfrei vielen Dank @all.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 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