AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

Ein Thema von Erutan · begonnen am 16. Aug 2013 · letzter Beitrag vom 16. Aug 2013
Antwort Antwort
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#1

Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 00:49
Delphi-Version: 5
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

 MemoKontaktdaten.Lines(zeilen_num); mit dem Curser zwischen ( und zeilen_num und sagt Missing Operator oder Semicolon.

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
Holger
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 00:51
Lines[], statt Lines() verwenden, dann sollte es funktionieren.

Zu deinen auskommentierten Zeilen:
Delphi-Quellcode:
WriteLn(Datei,MemoKontaktdaten.Lines.DelimitedText);
WriteLn(Datei,MemoPortrait.Lines.DelimitedText);
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union
Online

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.355 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 00:53
Lines ist eine Array-Property mit Index. Also den Parameter mit eckigen Klammern angeben.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#4

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 01:28
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:
 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);
Aber wie geht das bei den Memofeldern?
Holger
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 02:10
Hallo,

Zitat:
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.
Nein, da liegt wohl ein Tipfehler vor.

Zitat:
Bei den Editfeldern weiß ich wie das geht. [...] Aber wie geht das bei den Memofeldern?

Speicher doch die Anzahl der Zeilen Deiner Memos ab. Also beim Speichern:
Delphi-Quellcode:
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;
und beim Einlesen
Delphi-Quellcode:
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
Gruß
Volker Zeller

Geändert von Volker Z. (16. Aug 2013 um 02:30 Uhr) Grund: Klammern korrigiert
  Mit Zitat antworten Zitat
Erutan

Registriert seit: 16. Mär 2013
71 Beiträge
 
Delphi 7 Professional
 
#6

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 02:25
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
Holger
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

AW: Mehrere MEMO-Felder speichern. Wo ist hier der Fehler?

  Alt 16. Aug 2013, 04:27
Ich habe mir das Codebeispiel aus dem Buch "Delphi5 lernen" noch mal angeguckt. Da stehen runde Klammern.
Prinzipiell könnte das durchaus sein. "[" = "(." bzw. "]" = ".)". Den Punkt bei den Klammern, den könnte man wohl wirklich leicht übersehen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf