1. Ладно.
Расскажу, как пашет. Может, кому поможет.
Итак.
Цель всей возни: научить одного моего знакомого чувака (ещё не волшебник, но далеко пойдет, редиска, если только не будет пить столько пива) писать ini-анализаторы, не пользуясь компонентом TIniFiles, а то больно просто, и ему жизнь мёдом кажется.А заодно - свободно работать со строками, строковыми динамическими массивами, и файлами в стрим-режиме, используя ограниченное количество массивов (два штука). Заодно и на благо себе и людям поработать: я его на Ил-2 подсадил с год назад, может, со временем отработает.
Итак.
Поскольку в Conf.ini нас НЕ интересует раздел [Render_DirectX], которым мы не пользуемся, и в котором всё то же самое, что и в [Render_OpenGL], (но может и не совпадать), то сначала, открыв conf.ini читаем его построчно в дин. массив, и параллельно ищем строку [Render_OpenGL]. Найдя, читаем этот раздел в массив С, и снова продолжаем писать в А.
Тем самым, получаем два массива: А и С. В массиве С лежит весь [Render_OpenGL], в А - всё остальное.
Когда юзер тыцкает "Записать", построчно анализируем А: отбрасываем всё, что после равно в строке (пример: TexQuality=3), и заменяем строкой того вида, котоый нам необходим (смотря что выставлено). Аналогично с С.
Тем самым, реакция программы есть только на те строки, что прописаны в conf.ini. Причем, прописаны без комментариев и пробелов.
Если же вообще нет параметра - она его и "не видит", можно выставлять его в программе сколько влезет, эта строка не добавится, и изменения параметра при следующем запуске программы - не будет.
Пока что программа этих недостающих параметров не прописывает. Для того и дан conf.ini в архиве с программой (там всё что надо - прописано и изменяется), однако, обязательно будет прописывать и в ваших conf.ini, просто мы до этого ещё не дошли, и не совсем определились ещё, как сигнализировать об отсутствии строки, и вообще надо ли... =)
Пока что сделано по принципу "не навреди". Лучше уж пусть вообще не прописываются, чем будет прописываться что ни попадя куда ни попадя.
2. С 16-битным цветом: в версии 1.032 в строке "ColourBits=..." вместо "ColourBits=32" писалось "ColourBits=32 бит на пиксел" (я ж брал значение прямо из ComboBox, и забыл про это). Ил этого не понимал и сбрасывал строку в значение "ColourBits=16".
В версии 1.033 пишет как надо в случае, если conf.ini не read only. Проверено.
3. В Conf.ini герцовка не прописана. А значит, программа на герцы повлиять не может. Другое дело, если в видеодрайвере для режима 1024х768 прописано 60 Гц, тогда это надо драйверу стек намылить, мы трусы не рвали.
4. Про проблемы на английских и немецких виндах. Вижу один (!) положительный отклик (англ.), и один (!) отрицательный (нем.) - про немецкую винду. Что, эта проблема нужна только двум человекам?
Тогда фигли я в тельняшку потею...
========================================
2 ross_Schalker: чтобы вернуть всё назад, просто в безопасном режиме верни ей старый шрифт (если не оставил архивно, то возьми из дистрибутива с виндового диска). Тот, который в архиве - английский с поддержкой кириллицы. А у тебя-то нужен немецкий с поддержкой кириллицы...
Блин, не подумал я об этом.
Найди в инете немецкий шрифт Microsoft Sans Serif с поддержкой кириллицы, и будет тебе щастье.
P.S. Перевода не будет.
=========================================
2 UfP: Правильно ли я понял, что надо прописывать localhost (IP-адрес собственного компа)? Если да, то сделаем в следующей версии. Спасибо за внимательность, я действительно про версию забыл...
=========================================
2 =M=PiloT: посмотрел. В 1.033 ничего не затирается. И не может затираться.