社区
非技术类
帖子详情
关于函数参数中byval的问题
realmayer7903
2004-05-11 10:47:20
我写了一个函数
原型如下
abc(byval rs as adodb.recordset)
原打算递归使用解决问题
但是在实际使用中发现
当rs中的游标发生变化时,传递到递归展开的函数中的rs的副本的游标居然也发生了改变,而且如果中使rs副本的游标变化后,原rs的游标也发生了相应变化,这也就意味着所有的rs及其副本使用同一个游标,这样也失去了我使用byval传递参数的本意.
是不是byval在传递对象时失效呢?
不知道谁能给我解释解释?
...全文
179
10
打赏
收藏
关于函数参数中byval的问题
我写了一个函数 原型如下 abc(byval rs as adodb.recordset) 原打算递归使用解决问题 但是在实际使用中发现 当rs中的游标发生变化时,传递到递归展开的函数中的rs的副本的游标居然也发生了改变,而且如果中使rs副本的游标变化后,原rs的游标也发生了相应变化,这也就意味着所有的rs及其副本使用同一个游标,这样也失去了我使用byval传递参数的本意. 是不是byval在传递对象时失效呢? 不知道谁能给我解释解释?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ryuginka
2004-05-13
打赏
举报
回复
up
lilaclone
2004-05-12
打赏
举报
回复
byval为传值引用,你在函数内容不要直接使用传入的Recordset 对象,而是在函数体中另定义一个Recordset,将其赋值后使用
null1027
2004-05-12
打赏
举报
回复
学习ing
胖河马
2004-05-12
打赏
举报
回复
private sub abc(byref rs as adodb.recordset)
……
end sub
call abc(rs.clone)
这样你可以得到一个独立的游标,但是对记录集的改动还是会反映到原纪录集中
realmayer7903
2004-05-12
打赏
举报
回复
果然对象是需要new以后才能用的
realmayer7903
2004-05-12
打赏
举报
回复
引用次数是不是只在最后销毁对象的时候起作用呢
supergreenbean
2004-05-12
打赏
举报
回复
你来看看这样行不行
Private Sub Command1_Click()
Dim oRst As Recordset
dev.cmd
Set dg.DataSource = dev.rscmd
Set oRst = CloneRecordset(dev.rscmd)
Set DataGrid1.DataSource = oRst
With dev.rscmd
.MoveNext
Debug.Print .Fields(0)
End With
With oRst
.Move 2
Debug.Print .Fields(0)
End With
End Sub
Function CloneRecordset(oRst As Recordset) As Recordset
On Error GoTo ErrHandler
If oRst Is Nothing Then Exit Function
Dim oStream As Stream
Set oStream = New Stream
oRst.Save oStream
Set CloneRecordset = New Recordset
CloneRecordset.Open oStream
Set oStream = Nothing
Exit Function
ErrHandler:
Set CloneRecordset = Nothing
Set oStream = Nothing
End Function
flyingZFX
2004-05-12
打赏
举报
回复
那怎么做呀?
pigpag
2004-05-12
打赏
举报
回复
//对对象使用ByVal是没有用的,ByVal只是把对象引用次数加了个1
想要有ByVal的效果,一定要自己New一个新的实例,然后把属性都搬过去才行。注意,搬属性的时候不能Set,否则前功尽弃 :)
supergreenbean
2004-05-11
打赏
举报
回复
对对象使用ByVal是没有用的,ByVal只是把对象引用次数加了个1
vbs(asp)
ByVal
ByRef函数调用使用说明
在VBScript(Visual Basic Scripting Edition)和ASP(Active Server Pages)
中
,函数调用时的参数传递方式有两种主要类型:
ByVal
和ByRef。这两种方法决定了函数或子程序如何处理传入的参数,影响了参数值在调用者和被...
windows api函数
WindowsAPI大全这个压缩包文件很可能包含了关于Windows API的详细文档或示例代码,帮助开发者了解和使用各种API函数。其
中
可能包括了各个函数的功能介绍、参数说明、使用示例等内容。通过学习这些资料,开发者可以更...
VB版的api函数集合及用法
用VB的朋友请进 本压缩文件写的是关于API的函数全集,包括用法都在里面了 下面举例吧: PostMessage, PostMessageBynum, PostMessageBystring VB声明 Declare Function PostMessage& Lib "user32" Alias ...
VB 实现读写内存教程
WriteProcessMemory 函数用于将指定的值写入到目标地址
中
,它需要五个参数:ProcessHandle、Address、value、Sizeofvalue 和 BytesWritten。ProcessHandle 是从 OpenProcess 函数
中
得到的进程句柄,Address 是要写入...
VB使用URLDownloadToFile下载文件实例
在VB(Visual Basic)编程
中
,`URLDownloadToFile`是一个非常实用的API函数,它允许开发者从指定的URL下载文件到本地系统。这个函数属于Windows操作系统内置的`Wininet.dll`库,它提供了网络访问的功能,包括HTTP、...
非技术类
743
社区成员
26,912
社区内容
发帖
与我相关
我的任务
非技术类
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
复制链接
扫一扫
分享
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章