簡體   English   中英

GetPrivateProfileInt始終返回默認值

[英]GetPrivateProfileInt always return default value

我在Windows x64 PC上使用Visual Studio 2019,並且具有下面列出的簡單代碼:

“ magazzini.ini”文件如下所示:

[Delicarta]
A=55
B=80

GetPrivateProfileInt返回的輸出值始終是默認值0,而不是我在文件中寫入的值。 我怎么解決這個問題? 我必須將文件放在特殊目錄中嗎?

我試圖將文件名更改為“。\\ magazzini.ini”,並編寫了完整路徑(C:..),但我沒有解決問題

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    int A, B;

    // leggo i parametri dal file magazzini.ini
    A = GetPrivateProfileInt(L"Delicarta", L"A", 0, L"magazzini.ini");
    B = GetPrivateProfileInt(L"Delicarta", L"B", 0, L"magazzini.ini");

    cout << "Il valore del parametro A e' " << A << "\n";
    cout << "Il valore del parametro B e' " << B << "\n";

    system("PAUSE");
    return 0;
}

根據GetPrivateProfileInt()文檔:

lpFileName

初始化文件的名稱。 如果此參數不包含文件的完整路徑,則系統在Windows目錄中搜索文件。

因此,您必須提供INI文件的完整絕對路徑。 L"magazzini.ini"L".\\\\magazzini.ini"無法按您期望的方式工作。

如果INI文件與可執行文件位於同一文件夾中,請使用GetModuleFileName()檢索可執行文件的完整路徑,然后根據需要替換文件名部分,例如:

#include <iostream>
#include <Windows.h>
#include <shlwapi.h>

using namespace std;

int main()
{
    int A, B;

    WCHAR iniFilename[MAX_PATH] = {};
    GetModuleFileNameW(NULL, iniFilename, MAX_PATH);
    PathRemoveFileSpecW(iniFileName);
    PathCombineW(iniFilename, iniFilename, L"magazzini.ini");

    // leggo i parametri dal file magazzini.ini
    A = GetPrivateProfileInt(L"Delicarta", L"A", 0, iniFilename);
    B = GetPrivateProfileInt(L"Delicarta", L"B", 0, iniFilename);

    cout << "Il valore del parametro A e' " << A << "\n";
    cout << "Il valore del parametro B e' " << B << "\n";

    system("PAUSE");
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM