|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
||||||||||||||||
GetPrivateProfileString не выводит все ключи05.05.2014, 14:46. Показов 5375. Ответов 10
Метки нет (Все метки)
Добрый день!
Мучаюсь уже несколько дней, так и не пойму в чем загвоздка. Вообщем есть WinApi функция GetPrivateProfileString :
lpAppName — имя секции, в которой находится считываемй ключ. Если в качестве этого параметра передать NULL, функция вернет список всех секций в указанном INI-файле lpKeyName — имя ключа, чье значение нужно считать. Если в качестве параметра передать NULL, то функция, по аналогии с секциями, вернет имена всех ключей в секции. lpDefault — строка по умолчанию. Если в указанном INI-файле ключ lpKeyName не найден, то функция вернет это значение. lpReturnedString — буфер, в который будут записаны возвращаемые функцией данные lpFileName — имя считываемого INI-файла. То есть код типа :
Вот мой код (Visual Studio C++):
Но количество символов считает правильно. Спасибо за помощь.
0
|
||||||||||||||||
| 05.05.2014, 14:46 | |
|
Ответы с готовыми решениями:
10
GetPrivateProfileString
|
|
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
|
|||||||||||
| 05.05.2014, 16:19 | |||||||||||
|
Приветствую!
Ваш код немного не изящен. Плюс нужно указать имя переменной, а так вы получаете только первую строку секции. Конечно, следует отталкиваться от типа переменной - которую желаете получить. Не так давно, я "обернул" два класса: Чтение и Запись в *.INI файл. - выдержка-пример (при желании, вложение zip):
Кликните здесь для просмотра всего текста
* Чтение / Запись "*.INI" файла: ReadIni.zip
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
||
| 05.05.2014, 17:02 [ТС] | ||
|
Спасибо.
Я только начинаю заниматься VS C++ и приведенный Вами пример мне разобрать пока не под силу. Вы написали
Работая в RadStudio и читая описание компонентов, процедура работы с ini файлами прошла легко и быстро. Я удивлен,что WinApi функция не выполняет функционал из своего же описания, и мой мозг отказывается это понять уже вторую неделю. Неужели, чтобы вывести все ключи (или секции) из .ini файла необходим код в 71 строку?
0
|
||
|
68 / 65 / 21
Регистрация: 01.05.2014
Сообщений: 247
|
|
| 05.05.2014, 17:14 | |
|
Зачем в Семьдесят Одну Строку - Обижаете...
"Хотел как лучше, а получилось как всегда..." - из какого-то Юмористического сюжета. Согласен: "вам ленно" просмотреть код, тогда, вот: -----------------------------------[ ваш код ]----------------------------------------- char* out = new char[4096]; String^ outStr; GetPrivateProfileStringA("Section", NULL, NULL, out, 200, (LPCSTR)".\\inifile.ini"); ---------------------------------------| | -----печатайте здесь Имя_Переменной
1
|
|
|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
|||||||||
| 06.05.2014, 11:48 [ТС] | |||||||||
Но что то мне подсказывает, что такая вещь, как чтение .ini посредством WinApi реализуется в пару строк. Судя по поиску в интернете, такое ощущение, что я один, кто столкнулся с данной проблемой. Вот единственное, что нашел похожее, но решение там несколько абстрактно
Неужели никто не сможет помочь?
0
|
|||||||||
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
||
| 07.05.2014, 13:28 | ||
|
6eH, функция GetPrivateProfileString предназначена для чтения одной строки секции:
Возможно, также будет интересна функция GetPrivateProfileSectionNames.
1
|
||
|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
|||||||||||
| 07.05.2014, 17:53 [ТС] | |||||||||||
|
GrayWolf предложенные Вами функции тоже выводили только первый результат, но Ваш ответ натолкнул меня на верное решение.
Вообщем был всего лишь необходим цикл перехода строки в буфере. Выкладываю рабочий код (выводит все секции):
0
|
|||||||||||
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
||
| 07.05.2014, 19:01 | ||
|
Впрочем, каким бы ни было решение, главное было "пнуть" человека в нужном направлении
0
|
||
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
||||||
| 05.02.2017, 22:14 | ||||||
|
у меня выводит много мусора если выводить в секции Европа,ключ Турцию,да его его значение выведеться это Анкара и очень много мусора.
А если просто список всех ключей секции Европы то все ок и без мусора.Что делать? Добавлено через 22 секунды
0
|
||||||
|
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097
|
|
| 05.02.2017, 22:15 | |
|
test.zip
это ини файл,я пробовал вместо 4096 ставить 2 и 3 все равно мусор.
0
|
|
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
|
| 06.02.2017, 03:28 | |
|
1) Не используйте без крайней на то необходимости завершающие A и W в именах функций;
2) функция GetPrivateProfileString возвращает указатель на строку типа TCHAR, вы используете char* отсюда и ваш "мусор"; 3) старайтесь использовать Unicode, времена ASCII давно ушли. Используйте либо указатель на массив TCHAR, либо выполняйте преобразование из TCHAR в char.
0
|
|
| 06.02.2017, 03:28 | |
|
Помогаю со студенческими работами здесь
11
Бинарное дерево(увеличить все ключи дерева на число k) Узнать все ключи в реестре, которые создала программа
Непонятки с GetPrivateProfileString() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|