Что такое код getprivateprofileint


GetPrivateProfileInt — чтение только значений по умолчанию — c++

Я пытаюсь прочитать файл конфигурации .init в С++ с содержимым.

До сих пор я использовал этот код для чтения данных. Мой проект имеет набор символов Unicode и, следовательно, используется L перед строковыми значениями.

Но я получаю только значения по умолчанию в переменных, а не правильные значения из файла. Я еще ничего не сделал с реестром. Есть ли что-то, что я должен сделать в реестре для получения правильного значения.

Любые предложения будут полезны Спасибо.

    2 1
  • 22 окт 2020 2020-10-22 08:40:50
  • ShivShambo

1 ответ

На ум приходит идея: GetPrivateProfileString и друзья немного причудливы, когда они находят INI файл. Если вы не укажете путь к INI файлу (даже с таким простым, как .filename.ini ), они предполагают, что файл находится в каталоге Windows. Это почти наверняка не то, что вы хотите, и, вероятно, приведет к тому, что вы не найдете файл и, следовательно, значения по умолчанию.

Кроме того, не ожидайте полной поддержки Unicode от этих функций. Это всего лишь обертки Unicode вокруг текста ANSI.

GetPrivateProfileInt

Описание

function GetPrivateProfileInt(ApplicationName, KeyName: PChar; Default: Integer; FileName: PChar): Word;

Считывает из указанного файла инициализации целочисленное значение клавиши.

Паpаметpы

  • ApplicationName: Имя заголовка пpикладной задачи в FileName.
  • KeyName: Имя клавиши в FileName.
  • Default: Значение, пpинимаемое по умолчанию, если KeyName не найдено.
  • FileName: Имя файла инициализации в каталоге Windows.

Возвpащаемое значение

Значение клавиши; нуль, если отpицательное или не целое.

Что такое код getprivateprofileint

I am calling GetPrivateProfileInt(«SectionName», «KeyName», 0, «C:\\ABC.ini.») in Windows 7. If this «KeyName» is present in ini file under relevant section, it provides the required value. But if it is absent in the ini file, it returns the default value but with an error code (extracted using GetLastError()) FILE_NOT_FOUND. The same function works absolutely fine in Windows XP.

Илон Маск рекомендует:  Ftell дать позицию в файле

Am I missing out on some permissions or is it a bug in windows 7?

ВИДЕОКУРС
выпущен 4 ноября!

Описание:
function GetPrivateProfileInt(ApplicationName, KeyName: PChar; Default: Integer;
FileName: PChar): Word;

Считывает из указанного файла инициализации целочисленное значение клавиши.

Паpаметpы:
ApplicationName: Имя заголовка пpикладной задачи в FileName.
KeyName: Имя клавиши в FileName.
Default: Значение, пpинимаемое по умолчанию, если KeyName не найдено.
FileName: Имя файла инициализации в каталоге Windows.

Возвpащаемое значение:
Значение клавиши; нуль, если отpицательное или не целое.

Как знать, почему GetPrivateProfileInt / String сбой

Я работаю на кусок кода в старом приложении, с помощью C ++ в Visual Studio 2008. Он пытается прочитать некоторые значения из файла INI, и я пытаюсь сделать некоторые обработки ошибок в случае раздела или ключа I пытаюсь читать не существует в файле.

Вот фрагмент кода:

sINIFile содержит полный путь к моему необходимой INI-файлу.

После некоторого тестирования, я обнаружил, что GetLastError () возвращает 2 (ERROR_FILE_NOT_FOUND), если:

файл не существует или,

секция не существует или,

ключ не существует.

Я хотел бы знать конкретную причину, по которой GetPrivateProfileInt возвращаемого значения по умолчанию — это возможно?

Примечание: Я посмотрел в проверке значения «егто» (или errorno, как говорится на странице MSDN), но это всегда 0 для любого из вышеуказанных случаев.

GetPrivateProfileInt всегда возвращает значение по умолчанию

Я использую Visual Studio 2020 на ПК с Windows x64, и у меня есть простой код, указанный ниже:

Файл «magazzini.ini» выглядит так:

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

Я попытался изменить имя файла на «.\ Magazzini.ini», а также записал полный путь (C. ), но проблему не решил

1 ответ

В соответствии с GetPrivateProfileInt() документация:

Илон Маск рекомендует:  Лучше посмотреть на

Имя файла инициализации. Если этот параметр не содержит полный путь к файлу, система выполняет поиск файла в каталоге Windows.

Таким образом, вы ДОЛЖНЫ предоставить полный абсолютный путь к файлу INI. L»magazzini.ini» а также L».\\magazzini.ini» не будет работать так, как вы ожидаете.

Если INI-файл находится в той же папке, что и ваш исполняемый файл, используйте GetModuleFileName() чтобы получить полный путь к вашему исполняемому файлу, а затем при необходимости заменить часть имени файла, например:

Прочитайте онлайн СПРАВОЧНИК ПО WinAPI | GetPrivateProfileInt

Описание: function GetPrivateProfileInt(ApplicationName, KeyName: PChar; Default: Integer;

FileName: PChar): Word;

Считывает из указанного файла инициализации целочисленное значение клавиши.

Паpаметpы:

ApplicationName: Имя заголовка пpикладной задачи в FileName.

KeyName: Имя клавиши в FileName.

Default: Значение, пpинимаемое по умолчанию, если KeyName не найдено.

FileName: Имя файла инициализации в каталоге Windows.

Возвpащаемое значение:

Значение клавиши; нуль, если отpицательное или не целое. функция находится в файле kernel32.dll

GetPrivateProfileString

Описание: function GetPrivateProfileString(ApplicationName, KeyName, Default,

ReturnedString: PChar; Size: Integer; FileName: PChar): Integer;

Считывает из указанного файла инициализации стpоковое значение клавиши.

Паpаметpы:

ApplicationName: Имя заголовка пpикладной задачи в FileName.

KeyName: Имя клавиши в FileName или nil для получения списка имен клавиш.

Default: Имя, пpинимаемое по умолчанию, если KeyName не найдено.

ReturnedString: Пpинимающий буфеp.

Size: Размеp буфеpа.

FileName: Имя файла инициализации в каталоге Windows.

Возвpащаемое значение:

Фактическое число скопиpованных символов. функция находится в файле kernel32.dll

GetPrivateProfileInt всегда возвращает значение по умолчанию

Я использую Visual Studio 2020 на ПК с Windows x64, и у меня есть простой код, указанный ниже:

Файл «magazzini.ini» выглядит так:

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

Я попытался изменить имя файла на «.\ Magazzini.ini», а также записал полный путь (C. ), но проблему не решил

1 ответ

В соответствии с GetPrivateProfileInt() документация:

Имя файла инициализации. Если этот параметр не содержит полный путь к файлу, система выполняет поиск файла в каталоге Windows.

Илон Маск рекомендует:  Введение в CSS

Таким образом, вы ДОЛЖНЫ предоставить полный абсолютный путь к файлу INI. L»magazzini.ini» а также L».\\magazzini.ini» не будет работать так, как вы ожидаете.

Если INI-файл находится в той же папке, что и ваш исполняемый файл, используйте GetModuleFileName() чтобы получить полный путь к вашему исполняемому файлу, а затем при необходимости заменить часть имени файла, например:

Что такое правильный способ читать шестнадцатеричные значения с помощью GetPrivateProfileInt, GetPrivateProfileString?

Прямо сейчас я хочу, чтобы получить значения из переменных внутри ини и выплюнул их на SendKey функции. Так в настоящее время это, как я у них определены в верхней явно неправильна, поскольку я получаю значение по умолчанию, когда я проверить переменную.

Значения с сопзЬ Int Infront из них имеют шестнадцатеричное значение, как 0xA2 и 0x5A, которые являются просто Virtual-Key Codes. Я хочу beable изменить этот ключ в любое время вот почему я не просто использовать его в SendKey функции тех, кто с идеями о том, как получить GetPrivateProfileInt читать шестнадцатеричные значения.

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

GetPrivateProfileInt не поддерживает шестнадцатеричные. Если вы хотите поддержать шестнадцатеричный, вам придется позвонить GetPrivateProfileString и разобрать его самостоятельно.

Что такое правильный способ читать шестнадцатеричные значения с помощью GetPrivateProfileInt, GetPrivateProfileString?

Прямо сейчас я хочу, чтобы получить значения из переменных внутри ини и выплюнул их на SendKey функции. Так в настоящее время это, как я у них определены в верхней явно неправильна, поскольку я получаю значение по умолчанию, когда я проверить переменную.

Значения с сопзЬ Int Infront из них имеют шестнадцатеричное значение, как 0xA2 и 0x5A, которые являются просто Virtual-Key Codes. Я хочу beable изменить этот ключ в любое время вот почему я не просто использовать его в SendKey функции тех, кто с идеями о том, как получить GetPrivateProfileInt читать шестнадцатеричные значения.

GetPrivateProfileInt не поддерживает шестнадцатеричные. Если вы хотите поддержать шестнадцатеричный, вам придется позвонить GetPrivateProfileString и разобрать его самостоятельно.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL