Как я могу отделить разделы в INI файле?
При сохранении в INI файле, особенно когда определено несколько разделов, данные сохраняются вместе без строк между разделами.
Для внешнего редактирования было бы удобно разделить каждый раздел с разрывом строки, чтобы упростить просмотр и редактирование INI файла.
Пример:
Стандартный Ini
[GENERAL]
value1=0
value2=somestring
[ADVANCED]
type=1
autosave=0
[OTHER]
showatstartup=1
Ини с разделительными линиями
[GENERAL]
value1=0
value2=somestring
[ADVANCED]
type=1
autosave=0
[OTHER]
showatstartup=1
Как это можно сделать?
Ответы
Ответ 1
Загрузите файл и вставьте пустые строки перед каждым именем раздела. Здесь функция для него:
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;
Обратите внимание, что если перед именем раздела уже есть пустая строка, этот код добавит еще один. Цикл переходит к единице вместо нуля, предполагая, что нам не нужно добавлять пустую строку над первым разделом файла.
Ответ 2
Самый простой способ - открыть файл .ini с помощью TMemIniFile вместо TIniFile. Он работает одинаково, но когда он сохраняет (UpdateFile), пробелы автоматически добавляются между разделами.
Ответ 3
Вручное добавление строк действительно является приемлемым решением. Другой вариант - создать собственный собственный класс, наследующий от TIniFile, и изменить поведение, чтобы включить дополнительный разрыв строки перед заголовком раздела.
Обновление: используйте TCustomIniFile в качестве базового класса, если вы хотите использовать этот подход, а не TIniFile.
Ответ 4
Почему бы не использовать простой возврат каретки: Добавить (# 13 # 10);