| Autor |
Beitrag |
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 06.08.04 11:09
hallo,
ich möchte einen mehrzeiligen String wie zum Beispiel Memo1.Text als Eigenschaftswert in eine Ini schreiben.
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
      
Beiträge: 120
Win XP
D7 Enterprise
|
Verfasst: Fr 06.08.04 11:29
Ich würde jede Zeile einzeln speichern.
Gruß DelphiFreund
_________________ Irren ist menschlich...
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: 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
|
Verfasst: 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)
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?  Elfrieda?
//Edit:
Beim schreiben in TMemIniFile am Ende "UpdateFile" nicht vergessen.
|
|
DelphiFreund
      
Beiträge: 120
Win XP
D7 Enterprise
|
Verfasst: Fr 06.08.04 15:16
Muss es den ini sein? Es gibt dafür bessere Methoden.
Guß DelphiFreund
_________________ Irren ist menschlich...
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: 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)
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? Elfrieda? |
warum so umständlich?
mir fällt grad keine andere Kuh ein... 
_________________ "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
|
Verfasst: 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? 
|
|
StefanH
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: Sa 07.08.04 09:59
 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)
|
|