Autor Beitrag
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.08.04 11:09 
hallo,
ich möchte einen mehrzeiligen String wie zum Beispiel Memo1.Text als Eigenschaftswert in eine Ini schreiben.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  Information: string;
  ini: TIniFile;
...
Information := Memo1.Text;
ini.writeString(Titel, 'Information', Information);


Ergebnis:
Nur die erste Zeile des Memos steht am richtigen Platz. Der Rest steht ganz am Ende der Ini-Sektion, ohne das eine Eigenschaft davor steht. Also Jungs, wie wirds gemacht?
DelphiFreund
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 120

Win XP
D7 Enterprise
BeitragVerfasst: Fr 06.08.04 11:29 
Ich würde jede Zeile einzeln speichern.

Gruß DelphiFreund

_________________
Irren ist menschlich...
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Fr 06.08.04 14:21 
das wird an den Zeilenumbrüchen liegen...

StringReplace ist dein Freund ;)

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.08.04 15:02 
Wenn Du TMemIniFile nimmst kannst du auch einfach #0 als Zeilenumbruch-Ersatz nehmen, allerdings bringt das StringReplace durcheinander, weshalb du es ein bissl anders wieder auseinandernehmen musst: (Hier als Beispiel mit Memo1 als TMemo, p als integer, tmp als string und MemIniFile als TMemIniFile)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
tmp := MemIniFile.ReadString('Test', 'Test', 'Fehler beim Lesen der Datei');

Memo1.Clear;
p := pos(#0, tmp);
while p > 0 do
begin
 memo1.Lines.Add(copy(tmp, 0, p));
 delete(tmp, 1, p);
 p := pos(#0, tmp);
end;
if tmp > '' then
 memo1.Lines.Add(tmp);


@Stefan: Welche Kuh soll ich erschossen haben? :gruebel: Elfrieda?

//Edit:

Beim schreiben in TMemIniFile am Ende "UpdateFile" nicht vergessen.
DelphiFreund
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 120

Win XP
D7 Enterprise
BeitragVerfasst: Fr 06.08.04 15:16 
Muss es den ini sein? Es gibt dafür bessere Methoden.


Guß DelphiFreund

_________________
Irren ist menschlich...
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Fr 06.08.04 20:01 
obbschtkuche hat folgendes geschrieben:
Wenn Du TMemIniFile nimmst kannst du auch einfach #0 als Zeilenumbruch-Ersatz nehmen, allerdings bringt das StringReplace durcheinander, weshalb du es ein bissl anders wieder auseinandernehmen musst: (Hier als Beispiel mit Memo1 als TMemo, p als integer, tmp als string und MemIniFile als TMemIniFile)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
tmp := MemIniFile.ReadString('Test', 'Test', 'Fehler beim Lesen der Datei');

Memo1.Clear;
p := pos(#0, tmp);
while p > 0 do
begin
 memo1.Lines.Add(copy(tmp, 0, p));
 delete(tmp, 1, p);
 p := pos(#0, tmp);
end;
if tmp > '' then
 memo1.Lines.Add(tmp);


@Stefan: Welche Kuh soll ich erschossen haben? :gruebel: Elfrieda?


warum so umständlich? :mrgreen:

mir fällt grad keine andere Kuh ein... :roll:

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.08.04 22:34 
Wie geht es denn unumständlicher ohne dass es die Performance sch...lecht wird und/oder man in der INI gleich 200 Einträge für einen Text hat? :P
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: Sa 07.08.04 09:59 
:flehan: is ja gut
z.B könnte man ja (wie DelphiFreund sagte) nicht mit inis sondern mit "ganz normalen" Dateien arbeiten, via Memo1.Lines.SaveToFile :)

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)