![]() |
in Ini Datei mehrzeiligen text schreiben
moin,
wie kann man in eine Ini datei einen Mehrzeiligentext schreiben? |
Re: in Ini Datei mehrzeiligen text schreiben
Hi,
denke das wird nicht direkt unterstützt. Aber du kannst einfach alle Zeilenumbrüche durch ein anderes Zeichen (z.B. chr(26) = Substitute) ersetzen, was wiederum sehr einfach mittels String-Replace klappt. Natürlich nach dem Laden andersrum ;-) Gruß Der Unwissende |
Re: in Ini Datei mehrzeiligen text schreiben
Öhm, joa, wäre ne möglichkeit, aber ich kenne die Replacce Function von Delphi nicht ^^
|
Re: in Ini Datei mehrzeiligen text schreiben
Indem man die Datei öffnet (TFileStream, TStrings) und den Text reinschreibt. :)
Natürlich ist es dann keine Ini-Datei mehr, sondern eine ehemalige Ini-Datei mit mehrzeiligem Text. Oder du nutzt die WriteStream Methode von TIniFile und speicherst dir den Text als "binär" Daten ab. Aber Achtung: Hier gibt es eine Längenbegrenzung. |
Re: in Ini Datei mehrzeiligen text schreiben
Oder den Text vorher Base64 kodieren und beim laden dekodieren.
Dann kannst du mehrzeiligen Text in einer Zeile speichern. |
Re: in Ini Datei mehrzeiligen text schreiben
In der JCL gibt es dazu die Funktionen StrStringToEscaped und StrEscapedToString.
Ich glaube uebrigens das die INI-Funktionen eine Laengenbegrenzung bei den Strings haben. Zumindest erinnere ich mich schwach an so etwas. Relativ sicher bin ich mir das es eine 64K-Grenze fuer das gesamte INI-File gibt bzw. gab. |
Re: in Ini Datei mehrzeiligen text schreiben
alternativ kannst du auch eine solche ini-datei anlegen:
Delphi-Quellcode:
und dann halt einlesen:
linecount=5
line1="erste" line2="zweite" line3="dritte" ...
Delphi-Quellcode:
oder so, wie ich es in meine Sprachdateien mache:
memo1.lines.clear;
c:=readInteger('section','linecount',0); for i:=1 to c do begin Memo1.Lines.Add(ini.ReadString('section','line'+IntToStr(i),'')); end;
Delphi-Quellcode:
Gruß Frank
function ConvertLineBreak(s:string):string;
var p:integer; begin p:=pos('\n',s); while p>0 do begin s[p]:=#13; s[p+1]:=#10; p:=pos('\n',s); end; result:=s; end; s:='erste\nzweite\ndritte'; s:=ConvertLineBreak(s); |
Re: in Ini Datei mehrzeiligen text schreiben
Zitat:
|
Re: in Ini Datei mehrzeiligen text schreiben
Wenns schnell gehen soll verwende ich eine StringList, speichere den Text darin und schreibe StringList.DelimitedText in die INI und lade den DelimitedText hinterher wieder.
Sonst kodiere ich den String wie gesagt vorher Base64. Beispiel:
Delphi-Quellcode:
//Text speichern (Text ist in Memo1)
var Tmp: TStringList; begin Tmp := TStringList.Create; Tmp.Text := Memo1.Lines.Text; Ini.WriteString('Section', 'Value', Tmp.DelimitedText); Tmp.Free; end; //Text laden (In Memo1) var Tmp: TStringList; begin Tmp := TStringList.Create; Tmp.DelimitedText := Ini.ReadString('Section', 'Value', ''); Memo1.Lines.Text := Tmp.Text; Tmp.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz