如何使用UNIX行结尾保存TStringList?

时间:2013-06-26 12:22:02

标签: delphi

我无法想象如何使用UNIX行结尾(LF)而不是默认的CRLF来保存TStringList的行。

我尝试在stringList.Text属性上使用StringReplace()而没有任何成功: - (

2 个答案:

答案 0 :(得分:13)

StringList.Text是一个每次都生成文本的属性。因此,当您将修改后的文本分配回字符串列表时,您将撤消更改。当您再次获得文本时,stringlist将只使用其默认的换行符构建一个新字符串。

通过设置stringlist的LineBreak属性可以影响此字符。 LineBreak的默认值为sLineBreak常量,可以是Windows上的#13#10,也可以是Linux上的#10或Mac上的#13

否则,如果将StringList.Text保存在字符串变量中,则可以使用StringReplace更改该字符串,甚至更好地使用AdjustLineBreaks

答案 1 :(得分:0)

另一种可能性是在其字符串列表的版本中使用具有拆分/连接功能的Jedi代码库(http://jcl.sf.net)。

var so : TJclStringList; // PODO style, requires finally-free-end
    si : iJclStringList; // ref-counted interface for method chaining (aka Fluent API style)
    s  : String;
...
    s := so.Join(^J);
    s := si.Join(^J);