请教如何用vb6.0传递double类型的数组,我自己做总是出错,发送数据是用vc,就是传100个double都穿不了,清高手指点,谢谢了!

解决方案 »

  1.   

    使用万能的CopyMemory函数啊。Dim dblData(0 To 3) As DoubleDim bytData() As ByteReDim bytData(0 To (UBound(dblData) + 1) * 8 - 1)
    CopyMemory ByVal VarPtr(bytData(0)), ByVal VarPtr(dblData(0)), UBound(bytData) + 1'再传送bytData数组就OK了。
      

  2.   

    应该可以的,不知道楼主怎么写的实在不行就这样
    VC发送char数组给vb,vb再4个字节的解析
      

  3.   

    谢谢大家的建议,中午还不休息,我刚才困才困得受不了回去休息了一会。
    我一直编vc最近才做vb,用得还不熟,希望大家多多指教!
    我现在在试大家的建议,有结果我回发到帖子上。
    ......
      

  4.   

    Dim rec_dou(100) As Double
    Dim rec As DoublePrivate Sub Form_Load()
    Text2.Text = Winsock1.LocalIP
    Text3.Text = Winsock1.LocalPort
    With Winsock1
    .RemoteHost = "202.118.184.100"
    .RemotePort = 1088
    .LocalPort = 2000
    .Bind 2000End WithEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData rec, vbDouble, 1
    Dim s As String
    Dim count As Integer
    'For count = 1 To 100
    s = Str(rec)If Text1.Text = "" Then
       Text1.Text = s
    Else
       Text1.Text = Text1.Text & vbCrLf & s
    End If
    'Next count
    End Sub
    出错程序代码如上
      

  5.   

    benyfeifei(狒狒)
    报错说这个CopyMemory函数没有定义是怎么回事啊?
      

  6.   

    我倒 CopyMemory是API函数啊。把下面的语句放到Module里。
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
      

  7.   

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Dim rec_dou(100) As Double
    Dim rec As Double...Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim ab() As Byte
        ReDim ab(bytesTotal - 1)    Winsock1.GetData ab, vbArray + vbByte    CopyMemory rec_dou(0), ab(0), bytesTotal
    ...End Sub