Проблемы ini-файла
Кто-нибудь имел какие-нибудь проблемы при использовании модуля TIniFile? Я думаю здесь какая-то детская проблема с кэшированием!!!
Вот что я делал:
myIni := TIniFile.Create('c:\test.ini');
With myIni do
begin
// .... (добавляем новую секцию в test.ini
end;
myIni.Free;
RenameFile('c:\test.ini', 'c:\test1.ini');
Что я получил:
test1.ini НЕ ИМЕЕТ добавленной мною секции;
всякий раз при создании или открытии нового файла в том же самом каталоге с помощью File Manager, 'c:\test.ini' появляется вновь, и у него СУЩЕСТВУЕТ секция, которую я добавлял.
Я решил эту проблему добавлением следующей строки перед IniFile.Free:
WritePrivateProfileString(nil, nil, nil, PChar(IniFileName));
Для получения дополнительной информации обратитесь к электронной справке к разделу 'WritePrivateProfileString'
Автор: Tony Chang
Как указать системе на необходимость сбросить буфер INI-файла на диск
var
{$IFDEF WIN32}
CFileName: array[0..MAX_PATH] of WideChar;
{$ELSE}
CFileName: array[0..127] of Char;
{$ENDIF}
begin
{$IFDEF WIN32}
if (Win32Platform = VER_PLATFORM_WIN32_NT) then
WritePrivateProfileStringW(nil, nil, nil, StringToWideChar(FileName,
CFileName, MAX_PATH))
else
WritePrivateProfileString(nil, nil, nil, PChar(FileName));
{$ELSE}
WritePrivateProfileString(nil, nil, nil, StrPLCopy(CFileName,
FileName, SizeOf(CFileName) - 1));
{$ENDIF}
end;
Взято с http://delphiworld.narod.ru
Отправить комментарий