函式原型
DWORD GetPrivateProfileString(lpszSection, lpszKey, lpszDefault,lpReturnedString, cchReturnBuffer, lpszFile)
VB聲明
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
說明
為初始化檔案中指定的條目取得字串
返回值
Long,複製到lpReturnedString緩衝區的位元組數量,其中不包括那些NULL中止字元。如lpReturnedString緩衝區不夠大,不能容下全部信息,就返回nSize-1(若lpApplicationName或lpKeyName為NULL,則返回nSize-2)
參數表
參數 類型及說明
lpApplicationName String,欲在其中查找條目的小節名稱。這個字串不區分大小寫。如設為vbNullString,就在lpReturnedString緩衝區內裝載這個ini檔案所有小節的列表。
lpKeyName String,欲獲取的項名或條目名。這個字串不區分大小寫。如設為vbNullString,就在lpReturnedString緩衝區內裝載指定小節所有項的列表
lpDefault String,指定的條目沒有找到時返回的默認值。可設為空("")
lpReturnedString String,指定一個字串緩衝區,長度至少為nSize
nSize Long,指定裝載到lpReturnedString緩衝區的最大字元數量
lpFileName String,初始化檔案的名字。如沒有指定一個完整路徑名,windows就在Windows目錄中查找檔案
註解
如 lpKeyName參數為 vbNullString,那么 lpReturnedString緩衝區會載入指定小節所有設定項的一個列表。每個項都用一個 NULL字元分隔,最後一個項用兩個 NULL字元中止。也請參考 GetPrivateProfileInt函式的註解
用法
函式返回值為string的長度(long型),而從ini檔案獲得的字元串則保留在目的緩衝器中DWORD GetPrivateProfileString(
LPCTSTR lpAppName, //配置檔案的section名
LPCTSTR lpKeyName, //配置檔案的key名
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各參數的意義:
前二個參數與 WritePrivateProfileString中的意義一樣.
lpDefault : 如果INI檔案中沒有前兩個參數指定的欄位名或鍵名,則將此值賦給變數.
lpReturnedString : 接收INI檔案中的值的CString對象,即目的快取器.
nSize : 目的快取器的大小.
lpFileName : 是完整的INI檔案名稱.
下面是一個常見的出錯原因:
GetPrivateProfileString怎么總是讀不出來
--------------------------------------------------------------------------------
*.INI內容
[NETWORK]
ServerIP=100.100.100.53
程式:
main()
{
char ip[16];
DWORD num=0;
num=GetPrivateProfileString("NETWORK","ServerIP","", ip,sizeof(ip), "Server.ini");
cout<<num<<endl<<ip<<endl;
}
--------
num=GetPrivateProfileString("NETWORK","ServerIP","", ip,sizeof(ip), "X:\XXX\Server.ini");
檔案名稱必須是絕對路徑,如果傳入相對路徑,則默認路徑為C:\windows\
其他
在vb的api文本查看器中複製的聲明為:Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long