乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 75|回复: 4

intersecWith()方法的一个重要bug

[复制链接]

2

主题

10

帖子

3

银币

初来乍到

Rank: 1

铜币
18
发表于 2006-6-12 14:24:00 | 显示全部楼层 |阅读模式
intersecWith 方法是一个非常有用的方法,VBA手册中的给出的示例代码如下
在使用过程中我发现下面的代码不能够正确运行。具体说 If VarType(intPoints)  vbEmpty Then  这种判断方式有问题。按照手册的说法,如果有交点返回交点坐标,如果没有交点则不返回任何值,根据我的实际测试,即使是没有交点,返回的也是一个double()变量!!此时vartype() typename()的值分别是 8197 和 double()(vba语言参考中没有关于此值的说明,与此值相近的是 常数vbArry  值8192  代表数组  ) 而此时的 ubound(变量) 的值返回的是-1  !!
也就是说如果你想使用示例代码中的方法测试对象是否有交点不能的到正确的方法 应为无论是否有交点  vartype(交点) 的值 都不等于 vbEmpty  0   !!
我的测试环境是    2005 简体中文版 office2003  OS  windows XP sp2   
不知道我遇到的问题是否带有普遍性 或者说我上述的现象是否正确,请各位朋友验证一下。

   ' Find the intersection points between the line and the circle
    Dim intPoints As Variant
    intPoints = lineObj.IntersectWith(circleObj, acExtendNone)
   
    ' Print all the intersection points
    Dim I As Integer, j As Integer, k As Integer
    Dim str As String
    If VarType(intPoints)  vbEmpty Then
        For I = LBound(intPoints) To UBound(intPoints)
            str = "Intersection Point[" & k & "] is: " & intPoints(j) & "," & intPoints(j + 1) & "," & intPoints(j + 2)
            MsgBox str, , "IntersectWith 示例"
            str = ""
            I = I + 2
            j = j + 3
            k = k + 1
        Next
    End If
回复

使用道具 举报

2

主题

10

帖子

3

银币

初来乍到

Rank: 1

铜币
18
发表于 2006-6-12 14:28:00 | 显示全部楼层
我上面贴的代码是 手册中的代码示例,我使用的时候 是比较两个线段是否相交,结果无论是 平行线还是 非平行线 vartype(交点 as variant)返回的都不是  vbEmpty     
回复

使用道具 举报

7

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2006-6-14 10:54:00 | 显示全部楼层
我也遇到这个BUG。
闷了很久 MSGBOX了半天
最后只好把If VarType(intPoints)  vbEmpty then
改成 If ubound(intPoints)  -1 then
才行 。 巨闷ing。
回复

使用道具 举报

2

主题

10

帖子

3

银币

初来乍到

Rank: 1

铜币
18
发表于 2006-6-19 13:49:00 | 显示全部楼层
haha  终于遇到知音了 我也是 msgbox 半天 后来的用的方法和你的一样啊
回复

使用道具 举报

ljq

3

主题

31

帖子

4

银币

初来乍到

Rank: 1

铜币
43
发表于 2006-6-19 18:57:00 | 显示全部楼层
还有多余点问题呢,明明4个交点,它确返回5个或更多个交点.所以使用IntersectWith()一定要谨慎噢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 20:01 , Processed in 1.171815 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表