| Autor |
Beitrag |
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: So 16.02.03 23:51
Moin,
möchte in eine INI-Datei einen Wert speichern, der mehrere Zeilenumbrüche hat (z.B aus nem Memo). Geht das? Bisher speichert der das irgendwie blödsinnig, hat dann zwischen den Werten die einzelnen Zeilen *grml*
gruß
|
|
Alibi
      
Beiträge: 458
Win2K SP3
Delphi 6 Ent
|
Verfasst: Mo 17.02.03 00:10
Ich hab das bis jetzt so gemacht, dass ich für jede Zeile einen Inieintrag mache.
Line0=bla
Line1=blubb
Line2=blablubb
und dann so z.B. auslese:
Quelltext 1: 2: 3: 4: 5:
| i := 0; while Settings.ValueExists('PrintOptions','Top'+inttostr(i)) do begin MemoUpperText.Lines.Add(Settings.ReadString('PrintOptions','Top'+inttostr(i),'')); inc(i); end; |
So schreibe ich das ganze:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| i := 0; while Settings.ValueExists('HTMLExport','HTMLText'+inttostr(i)) do begin Settings.DeleteKey('HTMLExport','HTMLText'+inttostr(i)); inc (i); end;
for i := 0 to MemoHTMLText.Lines.Count-1 do Settings.WriteString('HTMLExport','HTMLText'+inttostr(i),MemoHTMLText.Lines[i]); |
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 17.02.03 00:21
Für die Lösung hab ich zwei Tage gebraucht und das soll ich so vertaten? Na gut
Quelltext 1:
| ..., Memo1.Lines.CommaText, ... |
Das einzige Problem ist, daß eine ganze Ini-Zeile ink. Schlüssel 1024 Zeichen fassen kann. Wenn das aber kein Problem ist, dann ist CommaText die Lösung.
|
|
UGrohne 
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 17.02.03 00:22
Danke, funktioniert einwandfrei. Dachte eigentlich erst da gibts irgendne EInstellungsfunktion. Aber auf die Idee bin ich irgendwie net gekommen *g*
Gruß
|
|
Alibi
      
Beiträge: 458
Win2K SP3
Delphi 6 Ent
|
Verfasst: Mo 17.02.03 00:31
Gibt es bei Commatext nicht das Problem, dass das ganze durcheinandergerät, wenn man Kommas im Memo verwendet?
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 17.02.03 00:48
| UGrohne hat folgendes geschrieben: | | Danke, funktioniert einwandfrei. Dachte eigentlich erst da gibts irgendne EInstellungsfunktion. Aber auf die Idee bin ich irgendwie net gekommen *g* |
Das ist ja auch das Problem wieso ich zwei Tage dafür gebraucht habe. Auf das einfachste kommt man garnicht.
| Alibi hat folgendes geschrieben: | | Gibt es bei Commatext nicht das Problem, dass das ganze durcheinandergerät, wenn man Kommas im Memo verwendet? |
Nein. Wenn Kommas im Text vorkommen, dann wird die Zeile in "Anführungszeichen" gesetzt. Und wenn Anführungszeichen vorkommen, dann werden diese in drei """ Anführungszeichen gesetzt.
|
|
Alibi
      
Beiträge: 458
Win2K SP3
Delphi 6 Ent
|
Verfasst: Mo 17.02.03 01:12
Die Methode ist weitaus eleganter als meine momentane. Es gibt hier jedoch ein Problem.
Wenn hier als Defaultwert eine Zeile mit 2 Wörtern getrennt durch ein Leerzeichen ist:
LissaJous Simulation
Wird das in der Inidatei mit einem Komma dazwischen abgespeichert:
LissaJous,Simulation
!?
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 17.02.03 01:28
Der Defaultwert muß dann auch ein CommaText sein, z.B.
Quelltext 1:
| Memo1.Lines.CommaText := ReadString('Section', 'Key', '"Gugalin, Popov"'); |
Wird in eine Zeile geschrieben.
Quelltext 1:
| Memo1.Lines.CommaText := ReadString('Section', 'Key', 'Gugalin, Popov'); |
Wird in zwei Zielen geschrieben.
|
|
Alibi
      
Beiträge: 458
Win2K SP3
Delphi 6 Ent
|
Verfasst: Mo 17.02.03 01:34
Naja, das Einlesen ist ja nicht so das Problem, eher das Abspeichern.
Einlesen:
Quelltext 1:
| MemoUpperText.Lines.CommaText := Settings.ReadString('PrintOptions','UpperText',MemoUpperText.Lines.CommaText); |
Abspeichern:
Quelltext 1:
| Settings.WriteString('PrintOptions','UpperText',MemoUpperText.Lines.CommaText); |
Das Abspeichern ergibt bei dem Memotext:
LissaJous Simulation
das hier:
LissaJous,Simulation
// Edit: Korrektur:
Das Speichern scheint einwandfrei zu funktionieren, nur das Laden nicht.
Beim Laden macht der aus dem Abgespeicherten "LissaJous Simulation" einen Zweizeiler...
// Edit: Lösung:
Wenn bei Inifiles ein String in Anführungszeichen steht werden die beim Auslesen nicht beachtet.
Also aus
Text="bla bla bla"
wird
bla bla bla
Eine kleine Korrektur beim Schreiben reicht:
Quelltext 1:
| Settings.WriteString('PrintOptions','UpperText','"'+MemoUpperText.Lines.CommaText+'"'); |
|
|