CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

如何知道动态数组是否已经Redim?

楼主youyiwuyi(有意无意)2004-05-03 16:34:04 在 VB / 基础类 提问

应用一个动态数组时会出错,那么如何知道动态数组是否已经Redim?用什么方法能在出错前进行判断? 问题点数:50、回复次数:8Top

1 楼BitBlt(Raster Operater)回复于 2004-05-03 17:04:36 得分 20

1、用错误处理来判断。  
   
  Option   Explicit  
  Dim   anArray()   As   Long  
   
  Private   Sub   Form_Click()  
  'ReDim   anArray(2)  
  On   Error   Resume   Next  
  Debug.Print   UBound(anArray)  
  If   Err.Number   =   9   Then  
          MsgBox   "Empty   Array"  
          Err.Clear  
  End   If  
  End   Sub  
  Top

2 楼MSTOP(陈建华)回复于 2004-05-03 17:14:57 得分 20

'  
  '数组是否已经初始化.  
  '函数:ArrEmpty  
  '参数:MyArr   数组名称.  
  '返回值:TRUE   已经初始化,FALSE   未初始化.  
  '例子:  
  Public   Function   ArrEmpty(ByRef   MyArr)   As   Boolean  
                    Dim   K   As   Long  
   
                    On   Error   Resume   Next  
   
                    K   =   UBound(MyArr)  
   
                    ArrEmpty   =   (Err.Number   =   0)  
                    Err.Clear  
  End   FunctionTop

3 楼BitBlt(Raster Operater)回复于 2004-05-03 17:19:33 得分 0

2、标准的方法。  
   
  Option   Explicit  
  Private   Declare   Sub   CopyMemory   Lib   "kernel32"   Alias   "RtlMoveMemory"   (ByVal   lpDest   As   Long,   ByVal   lpSrc   As   Long,   ByVal   Length   As   Long)  
  Private   Declare   Function   ArrayPtr   Lib   "msvbvm60"   Alias   "VarPtr"   (Arr()   As   Any)   As   Long  
  Dim   anArray()   As   Long  
   
  Private   Sub   Form_Click()  
  'ReDim   anArray(2)  
  Dim   cDims   As   Integer  
  CopyMemory   VarPtr(cDims),   ArrayPtr(anArray()),   2     '从SafeArray结构中取出头两个字节  
  If   cDims   =   0   Then   MsgBox   "Empty   Array"  
  End   SubTop

4 楼BitBlt(Raster Operater)回复于 2004-05-03 17:25:32 得分 0

陈建华老兄写错了,我来改一下。  
   
  ArrEmpty   =   (Err.Number   =   9)Top

5 楼chenziteng(陈子腾)回复于 2004-05-04 03:15:41 得分 10

-_-#,寒楼上的楼上,连SafeArray都摆出来了,不管标准不标准,都不符合VB"简单"的原则吧.  
   
  错误处理才是正道,   另外,   楼主连自己写的代码都把握不住吗?Top

6 楼BitBlt(Raster Operater)回复于 2004-05-04 17:33:44 得分 0

//用什么方法能在出错前进行判断?  
   
  用错误处理实际上是在出错后进行判断。  
  所以我说用safesrray是标准的方法。  
   
  //楼主连自己写的代码都把握不住吗?  
   
  我可没这么说。Top

7 楼yenight(抵制日货 利国利民 能不买日货,尽量不买)回复于 2004-05-04 18:26:33 得分 0

三杂金花Top

8 楼youyiwuyi(有意无意)回复于 2004-05-05 15:54:58 得分 0

1、多谢各位参与!  
    2、纵观各位的建议,似乎在告诉我:没有简单的方法知道动态数组是否已经Redim!如何才算简单?象用   IsNull   判断那样简单(可惜   IsNull   不行)。  
    3、如果非要通过自己编写函数判断,那么是否能“在出错前进行判断”已经不重要了,所以我宁愿不调用API。  
  Top

相关问题

  • 如何判断一个动态数组是否Redim过
  • 动态数组??????
  • 动态数组
  • 动态数组
  • 如何判断动态数组被redim过了
  • 动态数组在redim之前是empty,null,nothing or 其它?急!
  • 菜题<如何判断动态数组是否初始化>
  • 如何判断一个动态数组中是否有元素?
  • 动态生成的id,如何判断id是否是数组?
  • 动态数组CArray

关键词

  • anarray
  • redim
  • arrempty
  • 出错
  • cdims
  • 初始化
  • 是否
  • myarr
  • 知道动态数组
  • 方法

得分解答快速导航

  • 帖主:youyiwuyi
  • BitBlt
  • MSTOP
  • chenziteng

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo