Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ini: Mehrzeilige Texte (https://www.delphipraxis.net/588-ini-mehrzeilige-texte.html)

CalganX 11. Aug 2002 13:49


Ini: Mehrzeilige Texte
 
Hi,
mal eine Frage: wie kann ich es realisieren mehrzeilige Texte in die Ini zu schreiben (zum Beispiel den Text einer Memo).

Eine Möglichkeit wäre es so zu machen:
Code:
[section]
rowcount = 2
row1 = Dies ist ein Text
row2 = Dies ist ein weiterer Text
Oder eine weitere Möglichkeit wäre auch, die Zeilen-Umbrüche durch Zeichen ersetzen (also #13 durch \ und #10 durch n; daraus folgt: #13#10 = \n)

Aber was ist die beste, da es ehrlich gesagt sehr umständlich ist die zuvor genannten Methoden umzusetzen, gerade bei längeren Texten.

Chris

Daniel B 11. Aug 2002 14:00

:hi:

wenn du sooo lange Texte hast, dann solltest du aufpassen, den die normale INI geht nur bis 64KB. Wenn es mehr sein soll, dann brauchst du TBigIniFile oder TMemIniFile.

CalganX 11. Aug 2002 14:07

Ok, danke für den Tipp.
Ich vermute, dass Handling ist gleich, oder?
Gibt es vielleicht in einer der beiden Types zufälligerweise die Proz. WriteStrings?

Chris

Christian Seehase 11. Aug 2002 14:08

Moin Chris,

also so aufwändig finde ich das nicht.
Mal kurz umrissen:

Code:
  [color=#000080]// Schreiben[/color]
  ini.EraseSection('Section');
  ini.WriteInteger('Section','rowcount',Memo1.Lines.Count);
  [b]for[/b] i := 0 [b]to[/b] Memo1.Lines.Count-1 [b]do[/b]
  [b]begin[/b]
    ini.WriteString('Section','row'+IntToStr(i+1),Memo1.Lines[i]);
  [b]end[/b];

  [color=#000080]// Lesen[/color]
  Memo1.Lines.Clear;
  iCount := ini.ReadInteger('Section','rowcount',0);
  [b]for[/b] i := 1 [b]to[/b] iCount [b]do[/b]
  [b]begin[/b]
    Memo1.Lines.Add(ini.ReadString('Section','row'+IntToStr(i),''));
  [b]end[/b];
Ist zwar ungetestet, sollte soweit aber stimmen.

Christian Seehase 11. Aug 2002 14:11

Moin Chris,

noch ein kleiner Nachtrag:
Auslesen ginge auch mit ReadSectionValues.
Dann kannst Du in einem Rutsch alles in der Section einlesen.
Nachteil:
Er würde auch den Rowcount mitnehmen, die Zeile müsste dann entweder gelöscht, oder in einer anderen Section untergebracht werden, die nur die Zeilenzähler enthält.

CalganX 11. Aug 2002 14:20

Habe jetzt die Methode mit #13#10 durch \n ersetzen genommen ist kürzer und bedarf weniger Anderungen des Source.

Chris

Daniel B 11. Aug 2002 20:55

Zitat:

Zitat von Chris1308
Ich vermute, dass Handling ist gleich, oder?

Die TBigInifile ist gleich, nur das sie halt grösser sein kann. Die TMemIniFile kenn ich auch nur vom hören und sagen. Aber ich denke das die auch gleich ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz