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"); count<<num<<endl<<ip<<endl; } -------- num=GetPrivateProfileString("NETWORK","ServerIP,"", ip,sizeof(ip), "Server.ini"); Server.ini这个文件放在哪里的?要放在与应用程序相同的目录下应该用".//server.ini" 你看看是不是没有找到这个INI文件 ----------- VC中调试时,server.ini放在工程目录中;程序单独运行时,则需要放在跟exe同一个目录中。 因为从VC里启动程序,VC将程序的工作目录初始化为工程目录,而不是debug或release目录本身。
在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