1,动态数组所有元素清零;
2,动态数组还在,不能erase了再redim。
3,速度要尽可能的快,不要遍历每个元素。这个应该会用到copymemory 吧,
不过我试了几次都没有搞懂怎么做到。谢谢了

解决方案 »

  1.   

    晕呀!
    干什么要erase了再redim???????????
    直接Redim不就是清零吗? 干什么要copymemory??????????????
    拿什么Copy?是不是Copy前要再Redim一个同样大小的数组?一连串的???????????????????????????????????????????
    想不通!
      

  2.   

    哎呀。不行阿 homezj(小吉)!!
    数组是清零了。但是没用!!
    有没有其他办法?
      

  3.   

    Public Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlMoveMemory"  (dest As Any, ByVal numBytes As Long)
      

  4.   

    dim a() as byte
    redim a(0 to 9) as byte
    ZeroMemory a(0),lenb(a)
      

  5.   

    3,速度要尽可能的快,不要遍历每个元素。
    -------------------------------------
    用汇编做个dll,在程序中调用
      

  6.   

    Public Declare Sub ZeroMemory Lib "KERNEL32" Alias "RtlMoveMemory"  (dest As Any, ByVal numBytes As Long)
    ???这明显是个错误的API声明,自己试试看能不能用?
      

  7.   

    to Hassle() :
         ZeroMemory a(0),lenb(a)        这句当中的lenb(a)要出错阿,他好像是说类型不符。
    to kikikaki(江海门户通天下):
         对于我来说,不现实阿。还是仅限vb中吧。
      

  8.   

    Option ExplicitPrivate Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (dest As Any, ByVal numBytes As Long)Private Sub Command1_Click()
        Dim a() As Byte
        ReDim a(0 To 9) As Byte
        ZeroMemory a(0), UBound(a) + 1
    End Sub对不起各位,惭愧,惭愧!
      

  9.   

    to Hassle() :
      我的是2维数组。。是不是要这样?
    redim a(0 to 9,0 to 5) as byte
    ZeroMemory a(0,0), (UBound(a,1) + 1)*(UBound(a,2) + 1)
      

  10.   

    不行阿~~~~~~~~~~
    运行第一次,他说:bad dll calling convention
    中断调试,如果再继续,就出现:
    the memory could not be "read"...............
      

  11.   

    redim a(0 to 9,0 to 5) as byte    
    分配内存ZeroMemory a(0,0), (UBound(a,1) + 1)*(UBound(a,2) + 1)
    a(0,0)是首指针,(UBound(a,1) + 1)*(UBound(a,2) + 1)计算清零的范围上面的应该没问题bad dll calling convention
    没看过代码, 不敢乱说
      

  12.   

    阿^_^。这下对了!!
    谢谢 Hassle() !!
    这个方法的速度应该比遍历数组每个元素然后赋值0 要快吧?
    如果是就ok了!!