|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 29, 2004 05:02:01 Понадобилось мне заюзать ini-файл и случайно под win98 обнаружился такой косяк, значит key строка выглядит так: parameters=10101111 каждый 0/1 отвечает за свой параметр и соответствующий checkbox в диалоге Options. Вот.. В чем собственно косяк, если например прога была только что запущена, закрываем её и быстро меняем любой 0 на 1 или наоборот в ini-файле, стартуем прогу и обнаруживаем что настройки не изменились, т.е. ini-файл то конечно изменился а вот прога почему-то откуда-то грузит старые настройки и соответственно checkbox'ы установлены по-старому, после 2-3 рестартов всё приходит в норму и настройки начинают грузиться как положено. Кстати, если работать с ini-файлом исключительно через интерфейс диалога Options то всё в норме, ну или если после правки ini-файла перезагрузить винду. Почему так? Под 2k такой косяк не замечен. С файлом работаю стандартно через GetPrivateProfileString\WritePrivateProfileString. |
|
|
Дата: Апр 29, 2004 05:07:56 кэширование? |
|
|
Дата: Апр 29, 2004 05:14:30 Ну а чё делать-то? Написать в ini-файле чтоб не редактировали вручную? ;-) |
|
|
Дата: Апр 29, 2004 05:20:34 апишки должны быть. Посмотри в MSDN. Для открытого файла это кажись FlushFileBuffers. |
|
|
Дата: Апр 29, 2004 05:38:38 Но ведь по идее этим должен заниматься "Notepad", в котором я отредактировал файл, т.е. при закрытии Notepad'а всё должно тут же сбрасываться в файл. Мне кажется что из моей программы юзать FlushFileBuffers вроде не корректно? |
|
|
Дата: Апр 29, 2004 05:59:20 · Поправил: Toxic Ты хотя бы попробуй - посмотри, что будет после CreateFile/FlushFileBuffers/CloseHandle. Вот еще: Windows Me/98/95: The system keeps a cached version of Win.ini to improve performance. If all three parameters are NULL, the function flushes the cache. The function always returns FALSE after flushing the cache, regardless of whether the flush succeeds or fails. Возможно, это работает на любом файле, если передать нули в первых трех параметрах. |
|
|
Дата: Апр 29, 2004 06:17:12 · Поправил: Asterix Toxic Спасибо за мысль, косяк нашёл, оказывается такая строка должна быть использована чтобы вызвать Flush: invoke WritePrivateProfileString, NULL, NULL, NULL, OFFSET szIniFileName теперь всё пашет! |
|
|
Дата: Апр 29, 2004 08:43:13 Лентяй! :))) Трудно тебе было в MSDN заглянуть. Это же первое замечание в описании функции WritePrivateProfileString. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.105 |