複製鏈接
請複製以下鏈接發送給好友

WritePrivateProfileString

鎖定
WritePrivateProfileString函數名稱,多用於VB、VC中使用,函數聲明:Private Declare Function WritePrivateProfileString&Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As String, ByVal lpFileName As String)
外文名
WritePrivateProfileString
通    用
WritePrivateProfileString
説    明
初始化文件指定小節設置一個字串
參    數
lpApplicationName

WritePrivateProfileStringVB中的使用

所有版本通用:WritePrivateProfileString(lpApplicationName, lpKeyName, lpString, lpFileName)
VB聲明
Private Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As String, ByVal lpFileName As String)
説明
在初始化文件指定小節內設置一個字串
返回值
Long,非零表示成功,零表示失敗。會設置GetLastError
參數表
參數
類型及説明
lpApplicationName
String,要在其中寫入新字串的小節名稱。這個字串不區分大小寫
lpKeyName
Any,要設置的項名或條目名。這個字串不區分大小寫。用vbNullString可刪除這個小節的所有設置項
lpString
String,指定為這個項寫入的字串值。用vbNullString表示刪除這個項現有的字串
lpFileName
String,初始化文件的名字。如果沒有指定完整路徑名,則windows會在windows目錄查找文件。如果文件沒有找到,則函數會創建它
相關函數:GetPrivateProfileString

WritePrivateProfileStringVC中的使用

在我們寫的程序當中,總有一些配置信息需要保存下來,以便完成程序的功能,最簡單的辦法就是將這些信息寫入INI文件中,程序初始化時再讀入.具體應用如下:
將信息寫入.INI文件中
1.所用的WINAPI函數原型為:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
其中各參數的意義
LPCTSTR lpAppName 是INI文件中的一個字段名.
LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變量名.
LPCTSTR lpString 是鍵值,也就是變量的值,不過必須為LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名,如果沒有指定完整路徑名,則會在windows目錄(默認)查找文件。如果文件沒有找到,則函數會在windows目錄創建它。
2.具體使用方法:設現有一名學生,需把他的姓名和年齡寫入 c:\stud\student.ini 文件中.
CString strName,strTemp;
int nAge;
strName="張三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");
此時c:\stud\student.ini文件中的內容如下:
[StudentInfo]
Name=張三
3.要將學生的年齡保存下來,只需將整型的值變為字符型即可:
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");
將信息從INI文件中讀入程序中的變量
1.所用的WINAPI函數原型為:
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各參數的意義
前二個參數與 WritePrivateProfileString中的意義一樣.
lpDefault : 如果INI文件中沒有前兩個參數指定的字段名或鍵名,則將此值賦給變量.
lpReturnedString : 接收INI文件中的值的CString對象,即目的緩存器.
nSize : 目的緩存器的大小.
lpFileName : 是完整的INI文件名.
2.具體使用方法:現要將上一步中寫入的學生的信息讀入程序中.
CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo","Name","默認姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");
執行後 strStudName 的值為:"張三",若前兩個參數有誤,其值為:"默認姓名".
注意:如果在讀入的ini文件不存在,則按默認值生成相應的ini文件
3.讀出整型值要用另一個WINAPI函數:
UINT GetPrivateProfileInt(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
INT nDefault,
LPCTSTR lpFileName
);
這裏的參數意義與上相同.使用方法如下:
nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");
循環寫入讀出多個值
設現有一程序,要將使用的幾個文件名保存下來,具體程序如下:
1.寫入:
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");
文件://將文件總數寫入,以便讀出.
2.讀出:
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");
for(i=0;i {strTemp.Format("%d",i);
strTemp="FileName"+strTemp;
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");
文件://使用strTempA中的內容.
}

WritePrivateProfileString補充信息

補充三點:
1.INI文件的路徑必須完整,文件名前面的各級目錄必須存在,否則寫入不成功,該函數返回 FALSE 值.
2.文件名的路徑中必須為 \\ ,因為在VC++中, \\ 才表示一個 \ .
3.也可將INI文件放在程序所在目錄,此時 lpFileName 參數為: ".\\student.ini".