麻烦改写这段C++:
char sendBuf[MAX_PACKET_SIZE];
CP2PMessage *pMsg = (CP2PMessage*)sendBuf;
pMsg->nMessageType = P2PMESSAGE;
memcpy(&pMsg->peer, &m_LocalPeer, sizeof(m_LocalPeer));
memcpy((pMsg + 1), pszText, nTextLen);
其中CP2PMessage是个机构体:
struct CP2PMessage
{
int nMessageType; // 消息类型
PEER_INFO peer; // 节点信息
};
小弟对那个“pmsg+1”实在不会写,请大侠帮忙。

解决方案 »

  1.   

    试试这个
    也算一个思路吧
    delphi不支持指针移位运算~
    type
    MessageBuf = Record
    c: char[MAX_PACKET_SIZE];
    end;
    var
    sendBuf: array[0..1] of MessageBuf;  ////CP2PMessage是类的话,如下:
    CP2PMessage pMsg:= CP2PMessage(sendBuf[0]);
    pMsg.nMessageType:= P2PMESSAGE;
    //逐个写入pMsg,即sendBuf[0]
    //逐个写入sendBuf[1]
      

  2.   

    试下下面的代码:type
        PCP2PMessage=^CP2PMessage;
        CP2PMessage=record
            nMessageType:integer;
            peer:PEER_INFO;
        end;
    ......
        sendBuf:array [0..MAX_PACKET_SIZE] of char;
        pMsg:PCP2PMessage;    pMsg:=@sendBuf[0];
        pMsg^.nMessageType:=P2PMESSAGE;
        copymemory(@(pMsg^.peer),@m_LocalPeer,sizeof(m_LocalPeer));    copymemory(Pointer(integer(pMsg) + sizeof(CP2PMessage)), pszText, nTextLen);
      

  3.   

    不错啊!
    学习一下
    delphi中也有copymemory的啊!