vb编程 我用WritePrivateProfileString和GetPrivateProfileString冲突??
我用这两个api存入一个数值,然后调用出来,接着用一个新的数值赋值进去,这时候vb就直接崩溃了我应该怎么办呀?下面是部分代码ReadKeyVal为GetPrivatePr...
我用这两个api存入一个数值,然后调用出来,接着用一个新的数值赋值进去,这时候vb就直接崩溃了 我应该怎么办呀? 下面是部分代码ReadKeyVal为GetPrivateProfileString
PathSize(loopi + 1) = ReadKeyVal("GetFileSize", "GetFileSize" & loopi + 1, PathINI)
NowSize(loopi + 1) = “一个新的值”
If NowSize(loopi + 1) > PathSize(loopi + 1) Then
GetFileSize = WritePrivateProfileString("GetFileSize", "GetFileSize" & loopi + 1, TEMP(loopi), App.path & "\Path.ini") ’运行到这句的时候就出错了
End If 展开
PathSize(loopi + 1) = ReadKeyVal("GetFileSize", "GetFileSize" & loopi + 1, PathINI)
NowSize(loopi + 1) = “一个新的值”
If NowSize(loopi + 1) > PathSize(loopi + 1) Then
GetFileSize = WritePrivateProfileString("GetFileSize", "GetFileSize" & loopi + 1, TEMP(loopi), App.path & "\Path.ini") ’运行到这句的时候就出错了
End If 展开
2个回答
展开全部
我没用过WritePrivateProfileString这个api,不过我查看了下使用说明,vc版本的是这样的:
BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName );
其中各参数的意义
LPCTSTR lpAppName 是INI文件中的一个字段名.
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的. LPCTSTR lpFileName 是完整的INI文件名
也就是说,所有参数都是以指针形式表示的字符窜,那你从vb调用这个api的时候,参数传过去也要是一个指针,指针在vb中使用long型数据来表示的,你用string明显是不行的。
我没有试验,给出如下建议:
1、更改你的api定义,把参数类型都从string改成long,
Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As long, ByVal lpKeyName As long, ByVal lpString As long, ByVal lpFileName As long)
2、用VarPtrStringArray (或者其他几个获取变量的函数)获取你字符窜的地址,作为参数传递给api.
你试试看。
BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName );
其中各参数的意义
LPCTSTR lpAppName 是INI文件中的一个字段名.
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的. LPCTSTR lpFileName 是完整的INI文件名
也就是说,所有参数都是以指针形式表示的字符窜,那你从vb调用这个api的时候,参数传过去也要是一个指针,指针在vb中使用long型数据来表示的,你用string明显是不行的。
我没有试验,给出如下建议:
1、更改你的api定义,把参数类型都从string改成long,
Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As long, ByVal lpKeyName As long, ByVal lpString As long, ByVal lpFileName As long)
2、用VarPtrStringArray (或者其他几个获取变量的函数)获取你字符窜的地址,作为参数传递给api.
你试试看。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
writeprivateprofilestring "getfilesize","getfilesize"&loopi+1,temp(loopi),app.path & "path.ini"
第一,写操作最好不要返回值了,没什么意义
第二,我不知道你的temp(loopi)是什么,但我用下面句子调试,没有问题。
WritePrivateProfileString "1233", "4566", "1234", "c:\1234.ini"
第一,写操作最好不要返回值了,没什么意义
第二,我不知道你的temp(loopi)是什么,但我用下面句子调试,没有问题。
WritePrivateProfileString "1233", "4566", "1234", "c:\1234.ini"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询