如何分隔INI文件中的部分?

10 delphi ini

保存到INI文件时,尤其是在定义了多个部分时,数据将一起保存,部分之间不存在任何行.

对于外部编辑,将每个部分与换行符分开会很方便,以便更容易查看和编辑INI文件.

例如:

标准Ini

[GENERAL]
value1=0
value2=somestring
[ADVANCED]
type=1
autosave=0
[OTHER]
showatstartup=1
Run Code Online (Sandbox Code Playgroud)

Ini有分隔线

[GENERAL]
value1=0
value2=somestring

[ADVANCED]
type=1
autosave=0

[OTHER]
showatstartup=1
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

Bru*_*Gee 12

最简单的方法是使用TMemIniFile而不是TIniFile 打开.ini文件.它的工作方式相同,但是当它保存(UpdateFile)时,会在各个部分之间自动添加空格.


Rob*_*edy 9

加载文件并在每个部分名称前插入空行.这是一个功能:

procedure InsertSectionLineBreaks(const IniFile: TFileName);
var
  f: TStrings;
  i: Integer;
begin
  f := TStringList.Create;
  try
    f.LoadFromFile(IniFile);
    for i := Pred(f.Count) downto 1 do
      if (f[i] <> '') and (f[i][1] = '[') then
        f.Insert(i, '');
    f.SaveToFile(IniFile);
  finally
    f.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

请注意,如果节名称之前已经有一个空行,则此代码将添加另一个.假设我们不需要在文件的第一部分上方添加空行,循环下降到1而不是零.

  • @ A.Bouchez我的偏好是关于人类读者,而不是编译器发出的代码. (3认同)
  • @Andreas OT:在这种背景下我真的厌恶`pred`.与"Count-1"相比,我看不出美德. (2认同)