Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Memofeldeingabe in eine txt speichern
September - Di 22.03.05 14:52
Titel: Memofeldeingabe in eine txt speichern
Was ist denn hier bitte falsch dran?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); var gb:textfile; begin assignfile(gb,'C:\Dokumente und Einstellungen\Stefanie\Desktop\Delphi Projektordner\Gästebuch\gb.txt'); {$I-}reset(gb); {$I+}; if ioresult<>0 then rewrite(gb); write(gb,Memo1.text); closefile(gb); |
Und ich bekomme die Meldung I/O Error 105 (was mich wundert, weil es die gb.txt schon gibt).
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
Sprint - Di 22.03.05 15:08
Arbeite besser mit Stream's.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button1Click(Sender: TObject); const FileName = 'C:\Gaestebuch.txt'; var Stream: THandleStream; Handle: Integer; begin
if FileExists(FileName) then Handle := FileOpen(FileName, fmOpenReadWrite) else Handle := FileCreate(FileName);
if Handle <> -1 then begin Stream := THandleStream.Create(Handle); try Stream.Seek(0, soFromEnd); Memo1.Lines.SaveToStream(Stream); finally Stream.Free; CloseHandle(Handle); end; end;
end; |
September - Di 22.03.05 15:15
Danke ;), das funktioniert wunderbar, aber für den Anfang wäre mir meine "billige" Variante erst mal lieber. Bei deiner Variante werde ich erst mal die Befehle/Begriffe nachschlagen gehen.
jasocul - Di 22.03.05 15:27
Proiber doch mal:
Delphi-Quelltext
1:
| Memo1.lines.SavetoFile('C:\Dokumente und Einstellungen\Stefanie\Desktop\Delphi Projektordner\Gästebuch\gb.txt'); |
1. Du überschreibst deine Datei in jedem Fall. Somit würde obige Variante einfacher sein.
2. Write funktioniert iirc bei Textdateien nicht, sondern writeln.
3. Willst du die Daten anhängen, benötigst du appendfile. Ich glaube zumindest, dass es so heißt.
September - Di 22.03.05 16:09
Hallo,
nein, ich überschreibe meine Datei nicht in jedem Fall.
Mit dieser Zeile :
{$I-}reset(gb); {$I+};
überprüfe ich, ob die gb.txt Datei vorhanden ist. Ist sie Vorhanden, dann bleibt ioresult=0, ist sie nicht vorhanden wird es auf 1 gesetzt.
Ist also ein Fehler, dass heißt, die gb.txt existiert noch nicht, aufgetreten, dann tritt folgendes in Kraft
if ioresult<>0 then rewrite(gb);
und eine gb.txt wird erstellt.
Das "ln" habe ich bereits angehängt, hab ich auch gemerkt, hat aber nichts daran geändert. Und zu letzterem : Ich will einfach nur den Text in die Datei schreiben. Mh, vielleicht müsste ich dazu erstmal das auslesen was drin steht und den rest dann dazu addieren :?. Aber das ändert ja nichts daran, dass er es erst gar nicht reinschreiben will.
wdbee - Di 22.03.05 16:11
So wie es Reset fürs Lesen und Rewrite für Schreiben gibt, gibt es auch Append fürs Anhängen!
// Edit: Reicht nicht das schon aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| AssignFile(F,...) try try Append(F); except Rewrite(F) end; ... except CloseFile(F); end; |
jasocul - Di 22.03.05 16:14
Delphi-Hilfe schreibt zu Reset:
| Zitat: |
| Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt. |
September - Di 22.03.05 16:44
Schreibgeschützt :shock: ... na dann ist ja alles klar.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!