Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для _newbie_coder
6 / 6 / 0
Регистрация: 09.03.2017
Сообщений: 140

Нюансы GetPrivateProfileString\GetPrivateProfil­eInt

20.03.2017, 13:17. Показов 2636. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вопросы, помогите новичку!

1)Почему при чтении параметров из ini файла этими функциями
приходится указывать имя файла так:".\\settings.ini" ??
Если не поставить точку и два слеша, то придется указывать полный путь!
я вынужден писать такой код:
C++
1
GetPrivateProfileString("SectionA", "turbo", NULL, nstr,sizeof(nstr),".\\settings.ini");
2)Раскопав манул в MSDN по этой функции я обнаружил неприятную новость для себя:
"Note This function is provided only for compatibility with 16-bit Windows-based applications. Applications should store initialization information in the registry."

Перевожу как могу: "Примечание.Эта хрень поддерживается только ради жалости к 16-битным старым приложениям
для теплой ламповой Windows. Нормальные приложения ДОЛЖНЫ сохранять свою байду в реестр!"


Вопросы: эта функция работает в windows версиях выше чем windows 7 и в серверных ?
Есть ли какая нибудь 16-битная природа в этой функции ? (ограничения какие нибудь?)
Почему это вдруг приложения ДОЛЖНЫ записывать свои параметры в реестр ?
Представьте себе, если save игры писать в реестр!
Зачем мне предлагают реестр ? Я видел кучу современных win програм, которые хранят параметры в СВОИХ файлах, рядом с бинарником или в юзерских папках. Честно.
p.s.
когда стану поумней, я возьму функционал из boost. Правда не знаю, нужно ли это мне.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2017, 13:17
Ответы с готовыми решениями:

Непонятки с GetPrivateProfileString()
Привет, хочу прочитать с .ini некую информацию. Читаю так: LPTSTR str; ...

Составной путь к файлу GetPrivateProfileString()
Всем привет. Пытался найти решение моей проблемы, но безуспешно( Мне нужно прописать путь к ini-файлу путём соединения пути папки, в...

GetPrivateProfileString возвращает не правильно значение
Добрый день, в общем есть 2 функции GetPrivateProfileString и WritePrivateProfileString, для работы с ini файлами, запись происходит...

5
Заблокирован
21.03.2017, 01:46
далеко не
Цитата Сообщение от _newbie_coder Посмотреть сообщение
хрень
работает во-всех Windows, x64 - включительно
1
 Аватар для _newbie_coder
6 / 6 / 0
Регистрация: 09.03.2017
Сообщений: 140
21.03.2017, 12:06  [ТС]
Цитата Сообщение от stamp Посмотреть сообщение
далеко не

Цитата Сообщение от stamp Посмотреть сообщение
Цитата Сообщение от _newbie_coder Посмотреть сообщение
хрень
Это я прикалываюсь. Мне самому эта функция очень помогла и сэкономила время.
Цитата Сообщение от stamp Посмотреть сообщение
работает во-всех Windows, x64 - включительно
Это хорошо.

Добавлено через 6 минут
Кстати никак не могу понять вот этой логики в MSDN
Цитата Сообщение от MSDN
only for compatibility with 16-bit Windows-based applications.
почему only ?
1)Разве эта функция является затычкой или костылем ? Это просто абстракция от рутины работы с INI.
2)С INI-парадигмой перенос папки с программой, сохранит её настройки. В случае реестра - НЕТ
3)С INI-парадигмой можно легко отдать настройки другому пользователю на другой машине.
Смысл этого реестра ? Я не понимаю.
Кстати, если с этой функцией работают не только 16-битные приложения,а и 32-х и 64- битные, то почему они
написали "совместимость" и "16-битные" ???
Если это просто функция, и ОС её "дает" любым приложениям, то при чем тут совместимость с 16 битными ?
Я вообще запутался.
0
 Аватар для Igor-84
28 / 27 / 11
Регистрация: 04.03.2010
Сообщений: 199
21.03.2017, 13:51
_newbie_coder, многие необходимые и нужные на практике моменты msdn попросту не разъясняет и упускает. А еще, msdn любит лукавит насчёт описания функций и минимальных требований к ОС. Я сам часто встречал функции, в описании которых msdn утверждает, что требуется минимум win7. А на деле они прекрасно работаю на XP.
Не воспринимай буквально всё, что там пишут. Используй то, что удобно, что нравится. Я например, до сих в некоторых классах для работы с текстовыми строками иногда использую char, хотя есть библиотека string, а в C++Builder еще и классы AnsiString, UnicodeString. Но мне так нравится
1
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
21.03.2017, 19:01
Цитата Сообщение от _newbie_coder Посмотреть сообщение
приходится указывать имя файла так:".\\settings.ini" ??
Если не поставить точку и два слеша, то придется указывать полный путь!
так написано же
If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
а когда пишешь ".\\some.ini" - явно указываешь, что в текущей надо искать
Цитата Сообщение от _newbie_coder Посмотреть сообщение
Нормальные приложения ДОЛЖНЫ
should = следует, что явно не значит "ДОЛЖНЫ"
Цитата Сообщение от _newbie_coder Посмотреть сообщение
1)Разве эта функция является затычкой или костылем ? Это просто абстракция от рутины работы с INI.
2)С INI-парадигмой перенос папки с программой, сохранит её настройки. В случае реестра - НЕТ
3)С INI-парадигмой можно легко отдать настройки другому пользователю на другой машине.
1) так это устаревшая, т.к. использовались они вместо реестра, о чем может быть речь
2,3)а кто мешает в реестр писать установщиком, и никто не мешает пользоваться другим форматом разметки и сторонними либами для вытаскивания значений

microsoft раньше использовали ini-файлы, теперь реестр. если они посчитали, что так лучше, значит так и есть
2
 Аватар для _newbie_coder
6 / 6 / 0
Регистрация: 09.03.2017
Сообщений: 140
22.03.2017, 06:09  [ТС]
Цитата Сообщение от Asaido Посмотреть сообщение
так написано же
If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.
Так по логике должно быть тогда так "filename.ext". Это удовлетворяет указанию " does not contain a full path to the file,"

Я не могу понять, что делают там два слеша с точкой. Точка зачем ?

Добавлено через 1 минуту
Цитата Сообщение от Igor-84 Посмотреть сообщение
_newbie_coder, многие необходимые и нужные на практике моменты msdn попросту не разъясняет и упускает. А еще, msdn любит лукавит насчёт описания функций и минимальных требований к ОС. Я сам часто встречал функции, в описании которых msdn утверждает, что требуется минимум win7. А на деле они прекрасно работаю на XP.
Жесть! Какие еще скелеты хранит шкаф майкрософт ?

Добавлено через 1 минуту
Цитата Сообщение от Igor-84 Посмотреть сообщение
Не воспринимай буквально всё, что там пишут. Используй то, что удобно, что нравится.
ОК!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2017, 06:09
Помогаю со студенческими работами здесь

GetPrivateProfileString не выводит все ключи
Добрый день! Мучаюсь уже несколько дней, так и не пойму в чем загвоздка. Вообщем есть WinApi функция GetPrivateProfileString : ...

GetPrivateProfileString "съедает" пробел
Привет, есть ini файл, в нем такая строка: Считываю так и вставляю в Edit так: TCHAR Text; GetPrivateProfileString(General,...

Нюансы в программном коде Win32 API
Здравствуйте, господа профи! Именно к Вам есть вопросы связанные в программированием в C++ для Win32. Программированием занимаюсь...

GetPrivateProfileInt всегда возвращает ноль
Хотел считывать значение из INI-файла, но столкнулся с такой проблемой: #include <Windows.h> #include <iostream> ...

Нюансы обучения: желание учесть все нюансы - корректность кода или overengineering?
Здравствуйте программисты! Ответьте пожалуйста на такой вопрос(объясните) Вот я учу С++ и решаю задачи по учебникам, и постоянно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru