不可能的
无法得到对象所占内存就算得到了
VB的String、SafeArray都是指针,不好处理

解决方案 »

  1.   

    Public Function SHAddPlan(SHAddPlanType As Long, Number As Long, HiEventUserID As String) As Integer
    mConn.BeginTrans
    'On Error GoTo GetListErrorDim i As Long
    i = 0
    Dim scmd As String
    Dim SHAddPlanArray() As SHAddPlanType
    ReDim SHAddPlanArray(0 To Number) As SHAddPlanType
    CopyMemory ByVal VarPtr(SHAddPlanArray(0)), ByVal SHAddPlanType, ByVal (Number * LenB(SHAddPlanArray(0)))
    Do Until i = Number
    With SHAddPlanArray(i)
    scmd = "insert into FuserPlan(DwriteNameID,DreadNameID,DregisterDate,DexecuteDateTime,DplanSubject,DplanMemo,DfinishFlags)"
    scmd = scmd + " values('" & .HiwriteNameID & "','" & .HireadNameID & "','" & Date & "','" & .HiexecuteDateTime & "','" & .HiplanSubject & "','" & .HiplanMemo & "', '0') "
     End With
    mConn.Execute (scmd)i = i + 1
    Loop
    Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
    自己看,不懂问
      

  2.   

    TO:leaf24(leaf) ( )
        你说的是Copy long型数据,但我要的是复制Object
      

  3.   

    应该不可能,因为如果你不能得到这个对象的准确的大小
    比如你想刻隆rst,那么你用copymemory,你得知道这个对象的大小??
    ?????
      

  4.   

    'class1.cls'delare all variables in a struct
    type objdata
       var1 as long
       var2 as ...
    end typedim m_obj_data as objdatapublic property let var1(byval New_Value as long)
        m_obj_data.var1 = new_value
    end propertypublic property get var1() as long
        var1 = m_obj_data.var1
    end property
    friend get dataptr() as long
        dataptr = varptr(m_obj_data)
    end functionpublic function Clone() as class1
        dim c as class1
        set c =  new class1
        copymemory byval c.dataptr, m_obj_data, len(m_obj_data)
        set Close = c
    end function
      

  5.   

    TO:Un1()
       type objdata 中能否包含一个对象,比如一个ADODB.Recordset对象TO:litsnake1(litsnake)
       这个应该是可能的,不然MS的ADODB.Recordset是怎样实现Clone的?
    TO:ketao_78(春来江水绿如蓝)
       这个能实现的话用途是很广的,这点可能大家都知道。
      

  6.   

    这个跟ADODB.Recordset对象的数据库结构有关的,在这个结构肯定有这个对象的大小的信息的,只是我们不知道
      

  7.   

    不然MS的ADODB.Recordset是怎样实现Clone的?--------------------------------------------------------------------
    自己的类
    当然可以知道由那些属性
    逐个赋值就是了
      

  8.   

    就像zyl910说的,即使你知道recordset的大小,也不可能实现,因为里面有很多数据是指针,你复制得到的还是指针,和用set也差不多.CopyMemory 只适合简单数据类型和结构,而且不能有是指针的数据变量.
      

  9.   

    可以,不过这时除了 copymemory 外,还需要 set obj, 但由于你拷贝时已经复制变量所以你需要:
    dim rs as recordset
    set rs = m_obj_data.rs 
    dim l as long
    copymemory byval varptr(m_obj_data.rs), l, len(l)
    set m_obj_data.rs = rs
    copymemory rs, l, len(l)