![]() |
Delphi-Version: 5
Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Hallo, bei dem Versuch, mehrere Memofelder nach der Methode in einem älteren Delphibuch in eine Datei zu speichern, komme ich nicht weiter.
Delphi-Quellcode:
procedure TForm1.Button16Click(Sender: TObject);
var Datei: TextFile; text_datei: TextFile; text_zeilen: string; zeilen_num: Integer; begin if SaveDialogAlles.Execute then AssignFile(Datei, SaveDialogAlles.FileName); Rewrite(Datei); WriteLn(Datei, EditName.Text); WriteLn(Datei,EditEmail.Text); WriteLn(Datei,EditTelefon.Text); WriteLn(Datei,EditAgentur.Text); WriteLn(Datei,EditFirma.Text); WriteLn(Datei,EditWebseite.Text); WriteLn(Datei,EditUsername.Text); WriteLn(Datei,EditPassword.Text); //WriteLn(Datei,MemoKontaktdaten.Lines); //WriteLn(Datei,MemoPortrait.Lines); //--------------Test---------------------- for zeilen_num := 0 to MemoKontaktdaten.Lines.Count -1 do begin //liest geänderte Zeilen in Variable text_zeilen := IntToStr(zeilen_num) + MemoKontaktdaten.Lines(zeilen_num); //schreibt in Datei Zeile für Zeile WriteLn(datei,text_zeilen); end; //for end //------------Test Ende--------------------- CloseFile(Datei); end; Der Complier stoppt bei
Delphi-Quellcode:
mit dem Curser zwischen ( und zeilen_num und sagt Missing Operator oder Semicolon.
MemoKontaktdaten.Lines(zeilen_num);
Das ist eigentlich schon der x-te Versuch, Memofelder zusammen mit Editfeldern in eine Datei zu speichern. Die beiden auskommentieren Zeilen darüber wären mir mit Abstand am liebst. Geht aber nicht. Hat jemand eine Idee wie ich ähnlich einfach den Inhalt, zusammen mit den anderen Inhalten, abspeichern kann? Viele Grüße Erutan |
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Lines[], statt Lines() verwenden, dann sollte es funktionieren.
Zu deinen auskommentierten Zeilen:
Delphi-Quellcode:
WriteLn(Datei,MemoKontaktdaten.Lines.DelimitedText);
WriteLn(Datei,MemoPortrait.Lines.DelimitedText); |
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Lines ist eine Array-Property mit Index. Also den Parameter mit eckigen Klammern angeben.
|
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Hey,
das gig ja schnell :-) Funktioniert beides einwandfrei. Kann kaum glauben, daß es nur so ein kleiner Fehler war der mich tagelang umgetrieben hat. Kann es denn sein, daß sich die Syntax seit Delphi5 geändert hat? Ich habe mir das Codebeispiel aus dem Buch "Delphi5 lernen" noch mal angeguckt. Da stehen runde Klammern. Ich habe die auskommentierten Zeilen wieder auskommentiert und die Zeilennummerierung abgeschaltet. Vielen herzlichen Dank dafür! Der Code sieht jetzt so aus:
Delphi-Quellcode:
procedure TForm1.Button16Click(Sender: TObject);
var Datei: TextFile; text_datei: TextFile; text_zeilen: string; zeilen_num: Integer; begin if SaveDialogAlles.Execute then AssignFile(Datei, SaveDialogAlles.FileName); Rewrite(Datei); WriteLn(Datei, EditName.Text); WriteLn(Datei,EditEmail.Text); WriteLn(Datei,EditTelefon.Text); WriteLn(Datei,EditAgentur.Text); WriteLn(Datei,EditFirma.Text); WriteLn(Datei,EditWebseite.Text); WriteLn(Datei,EditUsername.Text); WriteLn(Datei,EditPassword.Text); // WriteLn(Datei,MemoKontaktdaten.Lines.DelimitedText); // WriteLn(Datei,MemoPortrait.Lines.DelimitedText); //--------------Test---------------------- for zeilen_num := 0 to MemoKontaktdaten.Lines.Count -1 do begin //liest geänderte Zeilen in Variable text_zeilen := MemoKontaktdaten.Lines[zeilen_num]; //schreibt in Datei Zeile für Zeile WriteLn(datei,text_zeilen); end; //for end for zeilen_num := 0 to MemoPortrait.Lines.Count -1 do begin //liest geänderte Zeilen in Variable text_zeilen := MemoPortrait.Lines[zeilen_num]; //schreibt in Datei Zeile für Zeile WriteLn(datei,text_zeilen); end; //for end //------------Test Ende--------------------- CloseFile(Datei); end; Das führt dazu, daß jeweils die Inhalte der Editfelder zeilenweise gespeichert werden und auch die Inhalte meiner beiden Memofelder zweilenweise gespeichert werden. Nun habe ich nur noch eine Frage: Wie schreibe ich sie wieder in die entsprechenden Felder zurück? Bei den Editfeldern weiß ich wie das geht.
Delphi-Quellcode:
Aber wie geht das bei den Memofeldern?
if OpenDialogAlles.Execute
then AssignFile(Datei, OpenDialogAlles.Filename); Reset(Datei); ReadLn(Datei,String1); EditName.Text:=String1; ReadLn(Datei,String1); EditEmail.Text:=String1; ReadLn(Datei,String1); EditTelefon.Text:=String1; CloseFile(Datei); |
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Hallo,
Zitat:
Zitat:
Speicher doch die Anzahl der Zeilen Deiner Memos ab. Also beim Speichern:
Delphi-Quellcode:
und beim Einlesen
procedure TForm1.Button16Click(Sender: TObject);
var linecount : Integer; //[...] begin linecount := MemoKontaktdaten.Lines.Count; WriteLn (Datei, IntToStr (linescount)); for zeilen_num := 0 to linescount - 1 do WriteLn (Datei, MemoKontaktdaten.Lines.Count [zeilen_num]); end;
Delphi-Quellcode:
Gruß
var
linecount : string; if OpenDialogAlles.Execute then begin AssignFile(Datei, OpenDialogAlles.Filename); Reset(Datei); ReadLn(Datei,String1); EditName.Text:=String1; ReadLn(Datei,String1); EditEmail.Text:=String1; ReadLn(Datei,String1); EditTelefon.Text:=String1; // Exemplarisch für MemoKontaktdaten ReadLn (Datei, linecount); try MemoKontaktdaten.Lines.BeginUpdate; MemoKontaktdaten.Lines.Clear; for i := 0 to StrToInt (linecount) - 1 do begin ReadLn (Datei, String1); MemoKontaktdaten.Lines.Add (String1) end; finally MemoKontaktdaten.SelStart := 0; MemoKontaktdaten.Lines.EndUpdate end; CloseFile(Datei); end |
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Hi Volker,
herzlichen Dank. Ich werd's ausprobieren sobald meine Acronis-Sicherung, die gerade eben gestartet ist, abgeschlossen ist. Melde mich dann wieder Viele Grüße |
AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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