Entwickler-Ecke

Sonstiges (Delphi) - Memofeld-Inhalt speichern/wieder öffnen


kuschelfreddy - Sa 14.03.09 18:40
Titel: Memofeld-Inhalt speichern/wieder öffnen
Hallo ihr alle!

Hab schon wieder eine Frage! :oops: Und zwar will ich den Inhalt eines Memofeldes speichern und die gespeicherte Datei wieder öffnen und deren Inhalt in ein Memofeld einlesen lassen.
Das Speichern habe ich so gemacht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var f:textfile;
begin
  if Savedialog1.execute
    then
      begin
        AssignFile(f, Savedialog1.Filename + '.txt');
        Rewrite(f);
        writeln(f, Memo2.text);
        CloseFile(f);
      end;
end;


Das klappt einwandfrei und er liest auch jede Zeile des Memofeldes ein. Jetzt habe ich das Öffnen genau umgekehrt gemacht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var f:textfile;
    zeile:string;
begin
  if opendialog1.execute
    then
      begin
        assignfile(f, Opendialog1.filename);
        Reset(f);
        Readln(f, zeile);
        Memo2.Text:=zeile;
        closefile(f);
      end;
end;


Allerdings liest er dabei nur die erste Zeile der gespeicherten Textdatei ein und nicht den gesamten Inhalt. Wüsste gern, wie ich das ändern kann...
LG Nathalie

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


Keldorn - Sa 14.03.09 18:42

Hallo,

mach es Dir nicht so umständlich und verwende

Delphi-Quelltext
1:
2:
3:
memo1.lines.savetofile(Dateiname)
und
memo1.lines.loadfromfile(Dateiname)


Gruß Frank


Gausi - Sa 14.03.09 18:42

Hallo, bei Memos geht das doch von Haus aus:

Schau dir mal Memo1.Lines.SaveToFile und Memo1.Lines.LoadFromFile an. :D


Regan - Sa 14.03.09 18:43

Und von mir der Copy&Paste-Code mit Memo2:

Speichern
1:
2:
if Savedialog1.execute then
  Memo2.Lines.SaveToFile(Savedialog1.FileName);



Öffnen
1:
2:
if Opendialog1.execute then
  Memo2.Lines.LoadFromFile(Opendialog1.FileName);


Edit: Ihr müsst praxisnaher sein :tongue: .


kuschelfreddy - Sa 14.03.09 18:44

Aber dann muss ich den Dateinamen doch von vornherein festlegen oder? Das möchte ich eben nicht, ich möchte den vom Benutzer individuell wählen lassen können...


Regan - Sa 14.03.09 18:45

user profile iconkuschelfreddy hat folgendes geschrieben Zum zitierten Posting springen:
Aber dann muss ich den Dateinamen doch von vornherein festlegen oder? Das möchte ich eben nicht, ich möchte den vom Benutzer individuell wählen lassen können...

Das Execute bedeutet, dass der Dialog mit "OK" beendet wurde. Dann wurde ein Dateiname festgelegt. Du muss halt nur noch prüfen, ob schon eine Dateierweiterung dran ist.


jaenicke - Sa 14.03.09 18:49

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Du muss halt nur noch prüfen, ob schon eine Dateierweiterung dran ist.
Oder beim Dialog DefaultExt auf txt z.B. setzen, dann wird das automatisch angehängt, wenn keine Erweiterung angegeben wird.


kuschelfreddy - Sa 14.03.09 18:50

OK, funktioniert, dankeschön! =)
Hier wird man förmlich mit Antworten überhäuft... Super Forum! =)


Xentar - Sa 14.03.09 19:05

user profile iconkuschelfreddy hat folgendes geschrieben Zum zitierten Posting springen:
Hier wird man förmlich mit Antworten überhäuft... Super Forum! =)

Das lag nur daran:
Zitat:
LG Nathalie


:P


jaenicke - Sa 14.03.09 19:08

:rofl: :rofl: :rofl:
Da magst du Recht haben. Aber um die Zeit ist auch eher mehr los als nachts oder morgens, was ich merke, weil ich im Moment ja sehr oft hier online bin. ;-)