麻烦改写这段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”实在不会写,请大侠帮忙。
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”实在不会写,请大侠帮忙。
也算一个思路吧
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]
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);
学习一下
delphi中也有copymemory的啊!