新闻资讯
看你所看,想你所想

WritePrivateProfileString

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

VB中的使用

所有版本通用: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

VC中的使用

在我们写的程式当中,总有一些配置信息需要保存下来,以便完成程式的功能,最简单的办法就是将这些信息写入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函式原型为:
DWORD GetPrivateProfileString(
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中的内容.
}

补充信息

补充三点:
1.INI档案的路径必须完整,档案名称前面的各级目录必须存在,否则写入不成功,该函式返回 FALSE 值.
2.档案名称的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .
3.也可将INI档案放在程式所在目录,此时 lpFileName 参数为: ".\\student.ini".

转载请注明出处海之美文 » WritePrivateProfileString

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com