Autor Beitrag
Roadrunner116
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: Di 09.01.07 16:56 
Hi ich möchte eine Stringlist mit Inhalten aus edits und einem memo füllen, diese speichern und auch wieder aufrufen!!!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  datalist:= TStringList.Create();
  datalist.Add(Edit1.Text);
  datalist.Add(Edit1.Text);
  datalist.Assign(Memo1.Lines);

Es wird nur der Inhalt des Memos gespeichert...... wo knnte der fehler liegen?

Moderiert von user profile iconGausi: Quote- durch Delphi-Tags ersetzt
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 09.01.07 16:58 
Mit Assign überschreibst du alle Einträge in der StringListe. Verwende deshalb:
ausblenden Delphi-Quelltext
1:
SList.Add(Memo1.Text);					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Roadrunner116 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: Di 09.01.07 17:06 
thx!

hatte das shcon nur halt mit "memo1.lines"!

hatte mein problem gepostet und diese lösung mit dem assing bekommen (www.delphi-forum.de/...8446&highlight=)

Funktioniert einwandfrei

Danke
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 09.01.07 17:16 
user profile iconRoadrunner116 hat folgendes geschrieben:

hatte das shcon nur halt mit "memo1.lines"!

...wobei du die Meldung
Compiler:
[Fehler] Unit1.pas(50): Inkompatible Typen: 'String' und 'TStrings'
bekommen hast, richtig? Mit AddStrings wärs auch gegangen wenn du mit Memo1.Lines arbeiten hättest *müssen* ... ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 09.01.07 17:46 
Moin!

Ich möchte hier nochmal etwas Aufklärung dransetzen. Die beiden möglichen Lösungen waren im Überblick:
ausblenden Delphi-Quelltext
1:
2:
3:
datalist.Add(Memo1.Text); // von GTA-Place

datalist.AddStrings(Memo1.Lines); // von JayEff

Dabei sind die Ansätze aber nicht gleichwertig :shock:, sondern haben unterschiedliche Funktion:

Mit .Add(.Text) fügst du den Inhalt des Memos als einzelnen String an die Liste an, während .AddStrings(.Lines) die einzelnen Zeilen des Memos an die Stringliste als einzelne Strings anfügt! :idea:

Aber in deinem Fall scheint mir keine der beiden Lösungen gut zu sein, denn beim Speichern per .SaveToFile() und später mit .LoadFromFile() geht dieser Unterschied nämlich wieder verloren, da durch die enthaltenen Zeilenwechsel in Memo1.Text wieder einzelne Strings aus der Datei gelesen werden. :!: ;)

Deshalb würde ich das beim Speichern so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  datalist: TStringList;
begin
  datalist := TStringList.Create;
  try // sicherstellen...
    datalist.Add(Edit1.Text); // Edit1 anfügen
    datalist.Add(Edit1.Text); // Edit2 anfügen
    datalist.Add(Memo1.Lines.CommaText); // Memo gekapselt anfügen
    datalist.SaveToFile('C:\Datei.txt'); // speichern
  finally // dass in jedem Fall die Stringliste
    datalist.Free; // wieder freigegeben wird
  end;

Und später beim Laden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  datalist: TStringList;
begin
  datalist := TStringList.Create;
  try // sicherstellen...
    datalist.LoadFromFile('C:\Datei.txt'); // laden
    if (datalist.Count >= 3then begin // min. 3 Strings da?
      Edit1.Text := datalist.Strings[0]; // Edit1 füllen
      Edit2.Text := datalist.Strings[1]; // Edit2 füllen
      Memo1.Lines.CommaText := datalist.Strings[2]; // Memo füllen
    end;
  finally // dass in jedem Fall die Stringliste
    datalist.Free; // wieder freigegeben wird
  end;

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.