![]() |
.txt lesen/schreiben
Schönen guten Morgen.
Ich möchte mir einen Notiz Programm schreiben. Das schreiben klappt auch. Also wenn ich einen Text eingegeben habe, und auf eintragen klicke soll der Text in die Datei reingeschrieben werden. Wenn ich dann neuen Text eingeben, soll der auch in die .txt Datei geschrieben werden und nicht den alten Text löschen. Hat da jemand ein Lösungsansatz für mich!? *thx* |
Re: .txt lesen/schreiben
Hi,
nimm doch eine Stringliste.
Delphi-Quellcode:
...
StringList.LoadFromFile(Dateiname); StringList.Add(MeinText); StringList.SaveToFile(Dateiname); ... |
Re: .txt lesen/schreiben
Benutze bitte die Suche hier.
Da findest Du bestimmt jede Menge Hilfe. |
Re: .txt lesen/schreiben
|
Re: .txt lesen/schreiben
|
Re: .txt lesen/schreiben
Ich benutze schon TStringList, ich kann auch schreiben.
Nur kann ich immer eine Zeile schreiben. Und ich will ja mehrere Sachen in die DAtei schreiben. SuFu hab ich benutzt, aber bin nicht fündig zu StringList und nächste Zeile schreiben.*sorry* |
Re: .txt lesen/schreiben
Wie wäre es, wenn du einfach mal die F1 Taste drückst und die Delphi-Hilfe, statt uns zu Grundlagenfragen bemühst?
Sollen wir jedem, der hier mit programmieren anfängt, das Rad (;)) nochmal von vorn erklären? |
Re: .txt lesen/schreiben
Dann zeig uns doch mal den Code mit dem du das machst.
|
Re: .txt lesen/schreiben
Denkst bestimmt, das ich nur den fertigen code will.
Aber is nicht so. Will und muss Delphi verstehen.
Delphi-Quellcode:
procedure TForm1.btn_einClick(Sender: TObject);
begin datei := TStringList.Create; nachricht := edt_nachr.Text; try datei.Add(nachricht); datei.SaveToFile('notiz.txt'); finally datei.Free; end; end; |
Re: .txt lesen/schreiben
Zitat:
Delphi-Quellcode:
Stimmt nicht, mann kann auch mehrere Zeilen hinzufügen.
StringList.Add(Memo1.Text);
|
Re: .txt lesen/schreiben
@ bitsetter
Also ich kann da nur immer eine Zeile schreiben. |
Re: .txt lesen/schreiben
Zitat:
Delphi-Quellcode:
datei.Add(nachricht_1);
datei.Add(nachricht_2); datei.Add(nachricht_3); |
Re: .txt lesen/schreiben
Delphi-Quellcode:
procedure TForm1.btn_einClick(Sender: TObject);
begin datei := TStringList.Create; nachricht := edt_nachr.Text; try //erstmal das alte File laden, falls vorhanden if FileExists('notiz.txt') then datei.LoadFromFile('notiz.txt'); datei.Add(nachricht); datei.SaveToFile('notiz.txt'); finally datei.Free; end; end; |
Re: .txt lesen/schreiben
[OT]
Nein, ich denke nicht, dass du nur fertigen Code willst. Sondern dass dir jmd. Schritt für Schritt erklärt, was dein Fehler ist und wie du's richtig machen kannst. Ist ja auch gut und schön. Nur bist du nicht der erste der mit dem Programmieren anfängt und für Anfänger haben sich andere Leute bereits viel Mühe gemacht und Hilfedateien, Bücher, Tutorials, FAQs, etc. zusammenzustellen, die genau das alles vermitteln: Ein grobes Konzept von Delphi, den Klassen, den Möglichkeiten und ein Gefühl dafür. Ich finde es einfach nur nicht gut, dass sich die Mentalität der Leute dank des Internets und der ganzen Foren dahin entwickelt, dass es ja viel einfacher ist, einfach jemanden zu fragen und sich alles vorkauen zu lassen, sobald Probleme auftauchen, statt sich mal selber durchzubeissen. Aber wer weiß, vielleicht werd ich auch einfach nur langsam alt und will's der Selbstbedinungsjugend nicht mehr gönnen, da sich unser einst damals auch durch Bücher und viele Try-And-Errors durchbeissen mußte. :zwinker: [/OT] |
Re: .txt lesen/schreiben
@Raven IV
Delphi-Quellcode:
Wie soll das denn bitteschön funktionieren, da müsste ich ja für
datei.Add(nachricht_1);
datei.Add(nachricht_2); datei.Add(nachricht_3); jede Nachricht eine Variable anlegen bzw. a Array. @DaddyH Danke jetzt hats perfekt funktioniert, aber warum muss ich den File vorher Laden!? Erkennt er nicht von selbst das da schon was drinne steht!? Eine frage hab ich noch, wie kann ich einen DAtensatz löschen!? Wenn ich Delete nehme kommt da immer eine Zugriffsverletzung. |
Re: .txt lesen/schreiben
|
Re: .txt lesen/schreiben
Danke für den Link, nur finde ich da nicht wirklich was zu
Delete. Eine Frage kommt da noch für mich auf, ich will die Daten lesen. Mit dem letzten geht das ja gut. Aber wie mach ich das mit den anderen!? Kann ich das mit Index machen!? Möchte das so realisieren das wenn man auf einen Button drückt immer der nächste angezeigt wird. Danke |
Re: .txt lesen/schreiben
Guck dir bitte die Links nochmal an, da wird TStringlist ausführlich erklärt.
TStringList hat viele Eigenschaften und Methoden, mit denen du all das erreichen Kannst was du willst. Am Besten du öffnest mal die Hilfe und suchst nach TStringList und liest mal die Beschreibung zu allen Methoden und Eigenschaften, dann wird es dir wahrscheinlich wie Schuppen von den Augen fallen, wie du das realsieren kannst. |
Re: .txt lesen/schreiben
[OT]
Zitat:
[/OT] |
Re: .txt lesen/schreiben
Zitat:
Genauso wie wennsch mit IndexOf arbeiten will. |
Re: .txt lesen/schreiben
Delphi-Quellcode:
So müsste es eigentlich gehen. Bei Pfad musst man den kompletten Pfad angeben. Neu ist eine StringList mit den anzuhängenden Dateien. Wichtig ist, dass die Datei existiert und "Neu" mindestens eine Zeile besitzt, da es sonst zu einem Fehler kommt. Beides kann man durch if-Abfragen prüfen.
begin
Datei := TStringList.Create; Datei.LoadFromFile(Pfad); for i:=0 to Neu.Count-1 do Datei.Add(Neu.Strings[i]); Datei.SaveToFile(Pfad); end; Den Code habe ich jetzt nicht ausprobiert. Kann also sein, dass da noch ein kleiner Fehler drin ist. |
Re: .txt lesen/schreiben
@Zipp
DAnke für den Code, aber das Eintragen neuer Zeichen hab ich schon. Probleme hab ich jetzt nur noch beim Löschen und Lesen. |
Re: .txt lesen/schreiben
Zitat:
diese Zahl gibt an an welcher Position etwas gelöscht werden soll. Eine Stringliste fängt mit der Position 0 an. Falls du in einer Schleife mehrere Einträge nacheinander löschen möchtest, musst du bedenken, dass nachfolgende Einträge ja nach vorne rutschen und so du auf nicht mehr existente Einträge zugreifen möchtest. Die Lösung hierbei ist die Schleife von der letzten Position der List zu beginen.
Delphi-Quellcode:
for i := MeineListe.Count-1 downto 0 do
begin MeinListe.Delete(i); end; IndexOf erwartete einen String und gint dir im Rückgabeergebnis zurück, an welcher Position in der Liste dieser string gefunden wurde. Wird der gesuchte String nicht gefunden, gibt es -1 zurück. |
Re: .txt lesen/schreiben
Hier ist mal mein Code für das löschen;
Delphi-Quellcode:
Das ist die Meldung, die ich bekomme;
procedure TForm1.btn_loesClick(Sender: TObject);
begin datei.Delete[1]; end; Zitat:
Delphi-Quellcode:
Und das ist die Fehlermeldung;
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList; begin lesen := TStringList.Create; lbl_nachr.Caption := nachricht; lesen.Free; end; Zitat:
|
Re: .txt lesen/schreiben
Zitat:
|
Re: .txt lesen/schreiben
:wiejetzt: versteh ich grad net!?
|
Re: .txt lesen/schreiben
Naja, das kommt davon, wenn man das Ziel will, ohne den Weg zu gehen. ;)
Soll heissen: Wie willst du auch etwas verstehen, wenn es dir scheinbar komplett an einem Grundlagenverständnis mangelt? Und nur weil ich das sage, will ich dir auch nichts böses. Sondern hol dir ein Buch oder studiere ein Tutorial was den Einstieg in Delphi von Grundauf erklärt. Wie die Syntax ist, wie man mit Klassen umgeht, Funktionen aufruft, etc. pp. Das meinte ich auch vorn: Warum soll man jedesmal und jedesmal und jedesmal wieder von vorn den Urschleim unselbständigen Leuten erklären, die es einfacher finden, ihre Delphikenntnisse so wie du anzueignen, statt es wirklich zu STUDIEREN. |
Re: .txt lesen/schreiben
Zitat:
Zitat:
MfG xZise |
Re: .txt lesen/schreiben
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList; begin lesen := TStringList.Create; lbl_nachr.Caption := nachricht; lesen.Free; end;
Delphi-Quellcode:
Funktioniert aber Trotzdem nicht.
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList; begin lesen := TStringList.Create; lbl_nachr.Caption := lesen[0]; lesen.Free; end; Zitat:
Funktioniert aber trotzdem alles nicht. @Nuklear Ping Was bringt mir ein Tutorial, hab den Code jetzt einfach mal fast 1:1 abkopiert und trotzdem Funktioniert es nicht. Da bringt auch ein Tut nichts. Kann mir wenigstens einer mal die Fehler erklären. |
Re: .txt lesen/schreiben
Guten Morgen,
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList; begin lesen := TStringList.Create; //hier erstellst Du eine StringList Instance // es wird aber nichts in die Liste eingelesen lbl_nachr.Caption := lesen[0]; // hier versuchst Du aus der List zu lesen lesen.Free; end; logischer wäre es so:
Delphi-Quellcode:
Grüße
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList; begin lesen := TStringList.Create; lesen.loadFromFile(....); if lesen.count > 0 then lbl_nachr.Caption := lesen[0]; lesen.Free; end; Klaus |
Re: .txt lesen/schreiben
Zitat:
Hättest du das hinter dir, würdest du deine Fehler selbst sehen. |
Re: .txt lesen/schreiben
Ne hätte den Fehler glaube niemals gefunden. Da hätte ich
1000 Tutorials machen können. Weißte auch warum, weil mir die Praxis noch fehlt. Als ich den Code von Klaus gesehen hab, wusste ich sofort wo mein Fehler liegt. Nämlich darin, das ich die Datei nie vor der Methode geladen/geöffnet habe. Und deswegen auch immer die Zugriffsverletzung kam. Weil ja nichts drin stand bzw er nicht wusste welche Datei. Nichts das ich was gegen Tutorials habe aber durch die Praxis lernt man es erst richtig. Ist jedenfalls meine Meinung. Sieht man ja heut auch oft im alltäglichen Leben, wer Praxiserfahrung hat liegt eigentlich meist im Vorteil gegenüber einem der nur Theorie kann. |
Re: .txt lesen/schreiben
Eine Frage bzw Problem habe ich jetzt noch, unzwar
funktioniert das Löschen eines Datensatzes noch nicht. Erkennt ihr vielleicht den Fehler;
Delphi-Quellcode:
begin
loeschen := TStringList.Create; loeschen.LoadFromFile('notiz.txt'); zeilen := loeschen.Count; loeschen.Delete(i); i := i + 1; loeschen.Free; if i = zeilen then ShowMessage('keine Notizen mehr vorhanden.'); end; |
Re: .txt lesen/schreiben
Hättest du Grundlagenwissen, hättest du von allein gewußt, dass eine frisch erzeugte Standard-Klasse keinen Inhalt hat. Woher auch? Soll Delphi raten was du vor hast? Das meiste was dein Programm machen - und auch nicht machen - soll, mußt du halt programmieren.
Ausserdem geht es darum, dass die Probleme und die Fragen die du hast, schon mindestens 100.000 andere Programmieranfänger auf der Erde hatten - und auch mindestens 50 Leute hier. Daher findet man das alles zu 100000% im Internet. Und für mich hat sammeln von Praxiserfahrung nichts damit zu tun, sich in einem Forum seine Anfänger- und Syntaxfehler korrigieren zu lassen. [edit] Vergiss es ... [/edit] |
Re: .txt lesen/schreiben
Wenn es schon 50 gehabt hätte, hätte ich dazu auch was bei der SuFu finden
müssen. Aber war nicht der Fall. Is ja nun auch egal, jede hat eben seine Meinung dazu. Kannst du mir dann vielleicht sagen, wie ich überprüfen kann ob er überhaupt versucht zu löschen!? |
Re: .txt lesen/schreiben
Zitat:
[dp]stringlist eintrag löschen[/dp] |
Re: .txt lesen/schreiben
Zitat:
|
Re: .txt lesen/schreiben
Eine StringList hat auch NICHTS mit der Datei zu tun, die man lädt. Das heisst, wenn du aus der Liste eine Zeile löschst, bleibt die Datei davon unberührt. Du müßtest die Liste per .SaveToFile wieder zurückschreiben, falls du das erreichen willst.
Vielleicht war da ja der Stöpsel ...? ;) |
Re: .txt lesen/schreiben
Na StringList hab ich ja auch nicht gesucht, da wusste ich noch nicht
das ich das damit mache. Aber trotzdem Danke, dadurch hab ich meinen Fehler gefunden. Muss nach jedem Löschen meine Liste Speichern. Und siehe da es funktioniert. Also das wars dann. Danke an alle die geholfen haben |
Re: .txt lesen/schreiben
Hi shader,
Zitat:
Programme bzw. Programmiersprachen bzw. Computer tun nur eine Sache. Sie bekommen ein Input (den Code), wandeln den um (komplieren) und geben ihn aus (Output/die .exe). Wenn der Input fehlt, wird nichts verarbeitet und demnach auch nichts ausgegeben. Zitat:
Wenn du "()" verwendest, sind dass Übergabeparamter einer Prozedur oder Funktion. Wenn du "[]" meinst du ein Array oder ein Set of. Übrigens, dass du die Datei laden musst, wurde in mehreren Beiträgen schon vor meinen geschrieben. Und auch das Speichern war dort zu finden. Sogar das Laden von Dateien die nicht existieren. Also benutzte zuerst die Suchenfunktion: ![]() Stelle dann deine Frage präzise, und Antworte präzise ;) Ansonsten fehlt wieder Input! Und damit auch Output. MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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