我看了VC是这样定义的:
typedef struct _modem_data_t {
   u32t       m_modemId;       // Modem模块的ID号
   u64t       m_recv_time; //接收到数据包的时间
   u16t     m_data_len; //接收到的数据包长度
   u8t      m_data_type;            //接收到的数据包类型,
   u8t      m_data_buf[1];            //存储接收到的数据
}ModemDataStruct;然后在一个函数里面我是这样来用的:
ModemDataStruct *pModemData;
pModemData=(ModemDataStruct *)(new char[10240+sizeof(ModemDataStruct)]);
static char buf[2048];我现在要在VB中写这些,就是后面的,我该怎么来做啊!

解决方案 »

  1.   

    dim pModemData as ModemDataStruct
    中间这个vb中似乎用不到
    dim buf(2048) as string
      

  2.   

    我后面还有这样用的:
    if pModemData->m_data_len>0
    {sprintf(buf,"\r\nuserid:%8.8x,time:%s,len:%d",pModemData->m_modemId,asctime(&when),pModemData->m_data_len);
    pMainFrm->AddTextToEditView(buf);
    }在VB里面怎么表达呢?
      

  3.   

    if pModemData->m_data_len>0
    {sprintf(buf,"\r\nuserid:%8.8x,time:%s,len:%d",pModemData->m_modemId,asctime(&when),pModemData->m_data_len);
    pMainFrm->AddTextToEditView(buf);
    }vb为:
    if pModemData.m_data_len>0 then
    '\r\n不明白是什么意思,asctime(&when)这个也不明白是什么意思
    buf="userid:" & pModemData.m_modemId & " time:" & asctime(&when) & " len:" & pModemData.m_data_len
    '这下面一句也不理解
    end if
      

  4.   

    typedef struct _modem_data_t {
       u32t       m_modemId;     // Modem模块的ID号
       u64t       m_recv_time;//接收到数据包的时间
       u16t     m_data_len;//接收到的数据包长度
       u8t      m_data_type;          //接收到的数据包类型,
       u8t      m_data_buf[1];           //存储接收到的数据
    }ModemDataStruct;vb好象为(不是太肯定,因为vc不懂):
    Private Type ModemDataStruct
            m_modemId As Long
            m_recv_time As Long
            m_data_len As Long
            m_data_type As Long
            m_data_buf As String
    End Type
      

  5.   

    if pModemData.m_data_len>0 then
    '\r\n不明白是什么意思,asctime(&when)这个也不明白是什么意思
    \r\n是回车换行,asctime(&when)是当前时间
    buf="userid:" & pModemData.m_modemId & " time:" & asctime(&when) & " len:" & pModemData.m_data_len
    sprintf相当于 debug.print 
    '这下面一句也不理解
    也是结构里面的东西,没贴全而已
    end if
      

  6.   

    各位大侠们,主要就是前面的定义啊,我自己在VB里面是这样做的:
    Public Type ModemDataStruct
        m_modemid As Long                            'Modem模块的ID号
        m_recv_time As Long                        '接收到数据包的时间
        m_data_buf() As Byte
        m_data_len As Integer                        '接收到的数据包长度
        m_data_type As Byte                          '接收到的数据包类型,                                                 
    End TypeDim rvdata As ModemDataStruct
    If rvdata.m_data_len > 0 Then


    现在主要就是对rvdata怎么定义啊,而且  u8t      m_data_buf[1];   在VB里面只要用这样可以吗:m_data_buf As String
      

  7.   

    自己解决了,只要将定义的BUF的范围改成 m_data_buf(0 To 10240) As Byte