Delphi:如何在ini文件中使用换行?

3

使用Delphi编写ini文件时,是否可以有换行?

我有一个字符串值需要使用,但它需要具有换行的能力。我不需要对文本进行其他格式化处理。

如何实现这一点?

3个回答

9

由您决定如何编码换行符。

这取决于您想要实现的用途和解码策略。

我使用URL编码。这样我可以覆盖更广泛的可能值范围。有许多可用的URL解码实现。

或者您可以遵循Orjan的建议。或者发明自己的方法。


你使用哪个URL编码函数? - Bruce McGee
我使用自己的编程语言,可以追溯到Turbo Pascal时代。 - PA.

6

我已经有一段时间没有使用Delphi了,但是我认为你不能直接包含换行符 - 一行就是一行。

但是正如Örjan所说,您可以在字符串中包含可以被解释为换行符的字符。

我怀疑"\n"在.ini文件中不会自动被特殊处理,但是您可以包含其他很少使用的字符,例如管道(|)或波浪线(~),然后让您的应用程序将其转换为换行符。


2
我在保存时使用了#7来替换#13#10,并在读取时将其转换回来。这肯定是一个不会自然出现的字符。 :) - Bruce McGee
像Bruce一样,当我写入INI文件时,我使用“CRLF”字符串来替换实际的#13#10。读取时,我会将CRLF替换回#13#10。 - Gabriel

3
当TStringList中存储了一个值时,我也需要这个功能。为了解决这个问题,我使用了TStringList.DelimitedText属性,而不是TStringList.Text:
定义分隔符:
Items.StrictDelimiter:= True;
Items.Delimiter:= ';';

保存:

IniFile.WriteString('Session', 'Key', Items.DelimitedText);

加载:

Items.DelimitedText:= IniFile.ReadString('Session', 'Key', '');

小心。Delphi 7 的 delimitedText 实现中存在一个 bug,它总是使用空格字符 #32 作为分隔符。我不知道在更近期的版本中是否已经修复了这个问题。请进行广泛的测试。 - PA.
谢谢你提醒,PA。我不必担心那个问题,因为自从 Delphi 2007 发布以来,我就没有再使用 Delphi 7 了。 - Cesar Romero
1
@PA:这不是一个错误 - 它是有意的,但通常是不希望的行为。Delphi的后续版本(2006+)添加了“StrictDelimiter”属性以避免这种情况。 - Gerry Coll
@PA:肯定不会被“修复”,因为这样会破坏向后兼容性。 - jpfollenius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接