Privesh Ответов: 3

Как читать и писать INI-файлы с помощью borland C++ 6.0?


Может ли кто-нибудь дать мне или предоставить ссылку на то, как использовать для создания и чтения ini-файла в borland C++ 6. Я унаследовал некоторые приложения, разработанные на C++ borland 6, которые читают и записывают в реестр, и мой босс хочет, чтобы они изменились на ini-файлы или другой метод. Я могу думать только о файлах ini, но любые файлы подойдут.
Кто-нибудь может мне помочь?

[no name]

Вы можете использовать текстовый форматированный файл для сохранения настроек программы и данных.
Каждая строка в файле состоит из имени параметра, символа табуляции и параметризованного значения.

3 Ответов

Рейтинг:
2

Kurt Degiorgio

взгляните на эту статью код не зависит от plaform как таковой он должен соответствовать вашим целям:

http://www.codeguru.com/Cpp/misc/misc/article.php/c233/[^]


Sergey Alexandrovich Kryukov

Должно сработать, мой 5-й.
--СА

Рейтинг:
1

#realJSOP

Я бы использовал XML-файлы. Ознакомьтесь с этой статьей. Я написал его для C++/MFC, но вы должны быть в состоянии адаптировать его к Borland C++ достаточно легко.

Класс профиля XML-приложения[^]


Sergey Alexandrovich Kryukov

Гораздо лучший выбор. Мой 5.
--СА

CPallini

Кстати, предложенная Джоном статья не будет работать без реестра...:-D

Sergey Alexandrovich Kryukov

Неужели?! Ну, это, конечно, делает Аргументы Джона не столь убедительными, но тем не менее его идея хороша. Реестр должен умереть (может быть, и нет, но ограничивается общесистемными настройками)!

Раньше я предлагал другой вариант, который для меня принципиально важен: контракт на передачу данных. (И, разумеется, никакого отношения к регистратуре. :-) Жаль, что я не могу сослаться на него здесь: это для .Только сеть.
Кстати, во многих местах документации .NET Microsoft официально рекомендует отказаться от установки и разрабатывать продукты, которые устанавливаются просто копией (xcopy или что-то еще). Я понимаю, что вы не очень заинтересованы в рекомендациях. Я тоже; я больше полагаюсь на собственную голову.

Спасибо.
--СА

#realJSOP

Смотрите мой ответ Генри. Использование реестра, о котором он говорит, связано с тем, что я использую COM-библиотеку DLL, предоставленную Microsoft. Я не нарушаю своего правила хранения чего-либо в реестре из моих собственных приложений.

Sergey Alexandrovich Kryukov

Спасибо за объяснение. По основному вопросу об использовании реестра я уже поддержал вас.
--СА

CPallini

Извини, я должен был тебе это сказать. Я полагал, что СА знал об этом.

CPallini

Установка голой копией выглядит привлекательной идеей.

Sergey Alexandrovich Kryukov

Мне нравится, если больше всего, особенно нравится пользователь. Когда у меня есть тесно конкурирующий выбор, я предпочитаю не устанавливать. В конце концов, у меня есть лучшие личные методы поддержания моего приложения организованным.

Но я также вижу (и разрабатываю) более реалистичный вариант: не установки, а с деинсталляцией/очисткой. Почему? Некоторые коды все равно загрязняют реестр (или что-то еще). При копировании продукт начинает работать и "устанавливается" сам (но на самом деле просто оставляет след; опции и т. д.) Вы использовали его и в конечном итоге хотите удалить. Просто запустите его как обычное приложение, нажмите пункт меню "Удалить" - он очистит все следы и завершит работу.

Это работает даже с Windows. Он может быть запущен как приложение и самостоятельно установить себя как сервис. В конце концов вы хотите отменить регистрацию службы, удаление каталога недостаточно-требуется процедура удаления. Я недавно разработал такую систему. Каждая сборка может реализовать какой-то специальный интерфейс для ununstallation. Утилита деинсталляции просто загружает все сборки без исключения. Если этот интерфейс реализован и проявляется через специальный атрибут сборки (найденный отражением) -- вызывает метод unistallation. Сделано.

--СА

#realJSOP

Но это не потому, что я в нем что-то храню. Это из-за Microsoft COM DLL, которую он использует, и я никогда ничего не говорил об ОС, использующей реестр, я сказал, что не храню в нем данные.

Sergey Alexandrovich Kryukov

Идеальный. Это значит, что мы согласны использовать реестр.
Спасибо за записку.
--СА

CPallini

Да, реестр-это один из фундаментальных механизмов, поддерживающих COM. Я не храню свои общие "данные" внутри реестра, я использую их для (некоторых) настроек приложений.

Рейтинг:
0

CPallini

Вы можете читать/писать INI файлы, использующие Windows API такие функции, как WritePrivateProfileString.
Вы можете найти такие функции, перечисленные в нижней части страницы эта страница MSDN[^].
Как отмечается на странице документации:

Эти функции предоставляются только для совместимости с 16-разрядными версиями Windows. Новые приложения должны использовать реестр.





#realJSOP

Конечно, ни один программист в здравом уме не будет намеренно использовать реестр. Я знаю, что избегаю этого, как чумы.

CPallini

На мой взгляд, структура реестра (дерево) намного лучше, чем INI-файлы.

Hans Dietrich

Похоже, это происходит циклично. Во-первых, у нас были INI-файлы. Тогда это было плохо (за МС), мы должны использовать реестр. Потом с ним .NET нам говорят использовать конфигурационные файлы (они же INI-файлы). Я полагаю, что следующим будет облако. :)

#realJSOP

Для меня это никогда не было циклом. Посмотрите, что у нас есть прямо сейчас. Vista/Weven даже не позволит вам писать в реестр без соответствующих разрешений. Это по своей сути ломает почти все приложения, которые делали это в прошлом. У меня никогда не было причин или не было оправдания для общего использования реестра для хранения данных.

CPallini

Реестр является центральным хранилищем для хранения настроек приложения (а не общих данных). Конечно, у него есть недостатки, но есть и определенные преимущества (например, древовидная структура).

#realJSOP

Я отказываюсь использовать его для чего-либо. Я отношусь к нему как к "Гото".

Sergey Alexandrovich Kryukov

Джон, ты абсолютно прав. Это была ошибка Microsoft, теперь признал мой Microsoft people. Дело в том, что я никогда не следовал этой ошибке, как и Джон. Моя собственная голова для меня важнее. Мне также удалось пропустить несколько технологий, которые считались модными, но позже никуда не делись. Критическое мышление действительно помогает.
--СА

CPallini

Итак, что я могу сказать? Джон ( и Сак ), пожалуйста, реестра, Гото ! :-D

Sergey Alexandrovich Kryukov

Джонс прав. Цикл-это когда вы с завязанными глазами следуете за трендом. Это плохо.
Наконец, люди Microsoft признали, что реестр плох.
Стиль, поощряемый разработкой .NET, сдвигает вещи в правильном направлении.
Даже установка xcopy-stype поощряется (лучший тип установки для меня).
--СА

CPallini

Когда люди из Microsoft признали, что реестр плохой (это не имеет для меня никакого значения)?

Sergey Alexandrovich Kryukov

Извините, я прочитал какую - то статью, не заложил их в закладки. Поскольку вы не очень заинтересованы в доказательстве ссылки, я надеюсь, что вы простите меня.
--СА

CPallini

Конечно, я доверяю вам и не собираюсь вести религиозную войну из-за регистратуры. :-)

Sergey Alexandrovich Kryukov

Спасибо.

Kurt Degiorgio

реестр лучше но для простых конфигураций его больше стоит использовать INI файлы чем реестр

Sergey Alexandrovich Kryukov

Просто не значит лучше.
Реестр просто загрязнен слишком большим количеством игроков. Не добавляйте к этому!
--СА