【问题标题】:Delphi: How to use line breaks in a ini file?Delphi:如何在ini文件中使用换行符?
【发布时间】:2009-11-11 14:10:28
【问题描述】:

是否可以在使用 Delphi 的 ini 文件中设置换行符?

我有一个我想使用的字符串值,但它需要能够换行。我不需要任何其他格式的文本。

我该怎么做?

【问题讨论】:

    标签: delphi


    【解决方案1】:

    由您决定一种方法来编码换行符。

    取决于你想要做的用途,以及你想要应用的解码策略。

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

    或者你可以听从 Orjan 的建议。或者自己发明。

    【讨论】:

    • 你使用哪个 URL Encoding 函数?
    • 我使用自己的,可以追溯到 Turbo Pascal 时代。
    【解决方案2】:

    自从我做 Delphi 以来已经有一段时间了,但我认为你不能直接包含换行符 - 一行就是一行。

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

    我怀疑“\n”在 .ini 文件中是否会以任何方式自动进行特殊处理,但您可以包含一些其他很少使用的字符,例如竖线 (|) 或波浪号 (~),然后让您的应用程序将其转换为换行符。

    【讨论】:

    • 我在保存时用#7替换了#13#10,在阅读时将其转换回来。这当然是一个不会自然出现的角色。 :)
    • 像 Bruce 一样,我在写入 INI 文件时使用 'CRLF' 字符串替换实际的 #13#10。当我阅读时,我将 CRLF 替换为 #13#10。
    【解决方案3】:

    当值存储在 TStringList 中时,我也需要这个。 为了解决这个问题,我使用了 TStringList.DelimitedText 属性,而不是 TStringList.Text:

    定义分隔符:

    Items.StrictDelimiter:= True;
    Items.Delimiter:= ';';
    

    保存:

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

    加载:

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

    【讨论】:

    • 小心。在 delimitedText 的 Delphi 7 实现中存在一个错误,该错误始终使用空白字符 #32 作为分隔符。我不知道它是否已在最近的版本中得到修复。广泛测试。
    • 感谢 PA 的提醒。我不必为此烦恼,自从 Delphi 2007 发布以来,我不再使用 Delphi 7。
    • @PA:这不是错误 - 它是有意的,但通常是不受欢迎的行为。更高版本的 Delphi (2006+) 添加了“StrictDelimiter”属性来避免这种情况。
    • @PA: ...而且它肯定不会被“修复”,因为这会破坏向后兼容性。
    猜你喜欢
    • 2019-05-16
    • 2020-07-17
    • 2017-08-08
    • 1970-01-01
    • 2011-01-06
    • 2013-05-14
    • 2011-01-29
    • 2011-09-01
    • 2015-04-27
    相关资源
    最近更新 更多