如题,
自定义类型如下:
Public Type Boi_Track
      Lon As Double
      Lat As Double
      direction As Integer
      Speed As Single
      AV As Boolean
      Timel As Long
      States As String
End Type在From中声明变量Dim Boi() as Boi_Track
…………
Redim Boi(100000)在UserControl中,同样这样声明
Dim UBoi() as Boi_Track
…………
Redim UBoi(100000)现在的问题是,如何通过内存拷贝等API方法,直接将Form中Boi数组拷贝到UserControl中的UBoi数组中。请高手回答

解决方案 »

  1.   

    不是高手,帮忙顶一下
    ---------------------------------------------------------------------------------
    可以先计算一个自定义类型的长度,然后用下边这个API试一下
    Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
      

  2.   

    我就用的这个API而且先通过UserControl取的定义数组地址  GetPtrs=ValPtr(Uboi(0))然后CopyMemory 也不行。哪怕是给这个数组地址只拷贝一个Long数据,调试VB6也死掉。CopyMemory Byval GetPtrs,Clng(4000),4还有哪位高人能解啊?
      

  3.   

    我暂时用的模块全局变量,倒是不用拷贝就让UserControl和Form数据共享。三天后结贴,谁拿分啊???
      

  4.   

    CopyMemory Byval GetPtrs,Clng(4000),4改成CopyMemory ByVal GetPtrs, CDbl(4000), 8就没问题了。至少我的机器上是这样的。期待源码。
      

  5.   

    呵呵
    CopyMemory不好玩哦参数一错就挂
      

  6.   

    是啊。也就这个能当指针用了。但是主程序窗体Form和控件UserControl内存变量拷贝。特别是常用的自定义类型头疼。哪位高人能解释一下。哪怕说说这些东西的工作原理也好!
      

  7.   

    为什么一定要CopyMemory呢?
    直接引用UserControl中的变量不好么?
      

  8.   

    我是想将一个自定义类型的数组传给UserControl。普通的Let,Get根本不灵,他们传变量还行。
      

  9.   

    MSDN关于Property Get 的描述:
    ==================================================================================
    Property Get 过程的返回值的数据类型;
    可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定长)、Object、Variant或任何用户定义类型。
    任何类型的数组都不能作为返回值,但包含数组的 Variant 可以作为返回值。 
    ==================================================================================