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
展开
 我来答
sss99900
推荐于2016-01-19 · TA获得超过310个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:396万
展开全部
我没用过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.
你试试看。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ffe7f1a
2012-04-20 · TA获得超过205个赞
知道小有建树答主
回答量:617
采纳率:0%
帮助的人:448万
展开全部
writeprivateprofilestring "getfilesize","getfilesize"&loopi+1,temp(loopi),app.path & "path.ini"
第一,写操作最好不要返回值了,没什么意义
第二,我不知道你的temp(loopi)是什么,但我用下面句子调试,没有问题。

WritePrivateProfileString "1233", "4566", "1234", "c:\1234.ini"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式