GetPrivateProfileInt

GetPrivateProfileInt是一個函式。

基本介紹

  • 外文名:GetPrivateProfileInt
  • 屬性:函式
  • 詞性:名詞
  • 返回值:Long,找到的條目的值
聲明,說明,返回值,參數表,註解,方法,例程,

聲明

Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long

說明

為初始化檔案中指定的條目獲取它的整數值。
UINT WINAPI GetPrivateProfileInt
(
_In_LPCTSTR lpAppName, //The name of the section in the initialization file.
_In_LPCTSTR lpKeyName, //The name of the key whose value is to be retrieved.
_In_INT nDefault, //The default value to return if the key name cannot be found in the initialization file.
_In_LPCTSTR lpFileName //The name of the initialization file
);

返回值

Long,找到的條目的值;如指定的條目未找到,就返回默認值。如找到的數字不是一個合法的整數,函式會返回其中合法的一部分。如,對於“xyz=55zz”這個條目,函式返回55。這個函式也能理解採用標準C語言格式的十六進制數字:用0x作為一個十六進制數字的前綴——所以0x55ab等價於vb的&H55AB

參數表

lpApplicationName String,指定在其中查找條目的小節。注意這個字串是不區分大小寫的
lpKeyName String,欲獲取的設定項或條目。這個支持不區分大小寫
nDefault Long,指定條目未找到時返回的默認值
lpFileName String,初始化檔案的名字。如果沒有指定完整的路徑名,windows就會在Windows目錄中搜尋檔案

註解

在Windows NT中,有些初始化檔案實際是在註冊表中。可在註冊表的下面這個項處找到這些檔案的一個列表:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
UINT GetPrivateProfileInt
(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);
使用方法如下:
BOOL WritePrivateProfileString
(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
CString strTemp,strTempA;
int i;
int nCount=6; //共有6個檔案名稱需要保存
for(i=0;i {strTemp.Format("%d",i);
strTempA=檔案名稱; //檔案名稱可以從數組,列表框等處取得.
"c:\\usefile\\usefile.ini");
strTemp.Format("%d",nCount);
//將檔案總數寫入,以便讀出.
UINT GetPrivateProfileInt
(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);
其中各參數的意義:LPCTSTR lpAppName 是INI檔案中的一個欄位名.LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變數名.LPCTSTR lpString 是鍵值,也就是變數的值,不過必須為LPCTSTR型或CString型的.LPCTSTR lpFileName 是完整的INI檔案名稱.

方法

nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");
BOOL Write Private Profile String (LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName);
CString strTemp,strTempA;
int i;
int nCount=6; //共有6個檔案名稱需要保存
for(i=0;i {strTemp.Format("%d",i);
strTempA=檔案名稱; //檔案名稱可以從數組,列表框等處取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,
"c:\\usefile\\usefile.ini");
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");
//將檔案總數寫入,以便讀出.
配置檔案中經常用到ini檔案,在VC中其函式分別為:
寫入.ini檔案:bool WritePrivateProfileString (LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
讀取.ini檔案:DWORD GetPrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpDefaut,LPSTR lpReturnedString,DWORD nSize,LPCTSTR lpFileName);
讀取整形值:UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault,LPCTSTR lpFileName);
其中個參數的意思:
LPCTSTR lpAppName ------- INI檔案中的一個欄位名
LPCTSTR lpKeyName -------- lpAppName 下的一個鍵名,也就是裡面具體的變數名
LPCTSTR lpString ---------是鍵值,也就是變數的值,必須為LPCTSTR或CString類型
LPCTSTR lpFileName --------完整的INI檔案路徑名
LPCTSTR lpDefaut ----------如果沒有其前兩個參數值,則將此值賦給變數
LPSTR lpReturnedString --------接收INI檔案中的值的CString對象,即接收緩衝區
DWORD nSize ------接收緩衝區的大小
例子:
CString StrName,Strtemp;
int nAge;
StrName = "jacky";
nAge = 13;
WritePrivateProfileString("Student","Name",StrName,"c:\\setting.ini");
結果:(INI檔案中顯示如下:)
[Student]
Name=jacky
讀取:
CString SName;
GetPrivateProfileString("Student","Name","DefaultName",SName.GetBuffer(MAX_LENGTH),MAX_LENGTH,"c:\\setting.ini");
結果:SName = "jacky";這裡需要注意點就是用完GetBuffer函式後一定要釋放(用SName.ReleaseBuffer()函式),不然後面再用到SName的其他子函式就會失靈。
讀整數比較簡單,如下
int Result = GetPrivateProfileInt("Student","nAge",0,"c:\\setting.ini")返回值即為所讀取的結果!
在GetPrivateProfileString最後一個參數是配置檔案路徑的參數,此路徑只能是絕對路徑,不能是相對路徑,但需要exe檔案能和配置檔案在一起。因此使用了GetCurrentDirectory函式。

例程

CString server_ip;CString des="";::GetCurrentDirectory(MAX_PATHLENGTH,des.GetBuffer(MAX_PATHLENGTH));des.ReleaseBuffer();des+="\\config.ini";GetPrivateProfileString("PhoneDemo",\    "Server_IP",\    "",\    server_ip.GetBufferSetLength(15),\    15,\    des);server_ip.ReleaseBuffer();
在這裡使用CString變數時,在使用完GetBuffer後,緊接著一定要使用ReleaseBuffer()函式,才可以進行其他的諸如字元串+操作

相關詞條

熱門詞條

聯絡我們