看来你对这个API还不了解
给你一个模块,你就知道了
Option Explicit
'写INI文件的API函数,分别是读和写
Private 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
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal filename As String) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
'read from the ini file
Public Function myReadINI(ByVal inifile As String, ByVal inisection As String, ByVal inikey As String, ByVal iniDefault As String) As String'Fail fracefully if no file / wrong file is specified.
'If no section (appname), default is first appname
'if no key, default is first key
Dim lpApplicationName As String
Dim lpKeyName As String
Dim lpDefault As String
Dim lpReturnedString As String
Dim nSize As Long
Dim lpFileName As String
Dim retval As Long
Dim filename As String
Dim strtemp As String
lpDefault = Space$(254)
lpDefault = iniDefault lpReturnedString = Space$(254) nSize = 254
lpFileName = inifile
lpApplicationName = inisection
lpKeyName = inikey
filename = lpFileName
retval = GetPrivateProfileString(lpApplicationName, lpKeyName, lpDefault, lpReturnedString, nSize, lpFileName)
strtemp = Trim(lpReturnedString)
myReadINI = Left(strtemp, Len(strtemp) - 1)
End Function
'write to ini file
Public Function myWriteINI(ByVal inifile As String, ByVal inisection As String, ByVal inikey As String, ByVal Info As String) As String
Dim retval As Long
retval = WritePrivateProfileString(inisection, inikey, Info, inifile)
myWriteINI = LTrim$(Str$(retval))
End Function
给你一个模块,你就知道了
Option Explicit
'写INI文件的API函数,分别是读和写
Private 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
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal filename As String) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
'read from the ini file
Public Function myReadINI(ByVal inifile As String, ByVal inisection As String, ByVal inikey As String, ByVal iniDefault As String) As String'Fail fracefully if no file / wrong file is specified.
'If no section (appname), default is first appname
'if no key, default is first key
Dim lpApplicationName As String
Dim lpKeyName As String
Dim lpDefault As String
Dim lpReturnedString As String
Dim nSize As Long
Dim lpFileName As String
Dim retval As Long
Dim filename As String
Dim strtemp As String
lpDefault = Space$(254)
lpDefault = iniDefault lpReturnedString = Space$(254) nSize = 254
lpFileName = inifile
lpApplicationName = inisection
lpKeyName = inikey
filename = lpFileName
retval = GetPrivateProfileString(lpApplicationName, lpKeyName, lpDefault, lpReturnedString, nSize, lpFileName)
strtemp = Trim(lpReturnedString)
myReadINI = Left(strtemp, Len(strtemp) - 1)
End Function
'write to ini file
Public Function myWriteINI(ByVal inifile As String, ByVal inisection As String, ByVal inikey As String, ByVal Info As String) As String
Dim retval As Long
retval = WritePrivateProfileString(inisection, inikey, Info, inifile)
myWriteINI = LTrim$(Str$(retval))
End Function
Dim typeNum As Integer
变量申明错了,在ini文件中只有字符型的变量!
如下
dim a as string
dim typenum as string
a=String(30, " ")
typenum=String(30, " ")
'30是变量的缓存长度,可以根据具体情况改小或加大
上面的语句一定妖分开,不然会出错!
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // section name
LPCTSTR lpKeyName, // key name
LPCTSTR lpDefault, // default string
LPTSTR lpReturnedString, // destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // initialization file name
);GetPrivateProfileString("init", "test", 3, typeNum, Len(typeNum), file)
V V X X X V
应该这样
dim buf as string *255
GetPrivateProfileString("init", "test", "xxxx", buf, 255, file)
if buf="xxxx" then
msgbox "error"
else
msgbox "ok"
end if
。
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)
说明
为初始化文件中指定的条目取得字串
返回值
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目录中查找文件 _________________________________________________你的调用在缓冲区给了一个3,而其实应该给一个指定长度的空串,读取INI的值并不是通过返回值得到,而是写到这个空传里面的,就象函数调用中的按地址传送