求那位大侠帮我把这段C++改成Delphi,关于指针的
麻烦改写这段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”实在不会写,请大侠帮忙。
问题点数:50、回复次数:6Top
1 楼myth_2002(myth)回复于 2006-03-08 11:04:39 得分 0
来个人啊Top
2 楼wvins(逸岚)回复于 2006-03-08 15:35:36 得分 10
试试这个
也算一个思路吧
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]
Top
3 楼myth_2002(myth)回复于 2006-03-09 10:06:02 得分 0
麻烦楼上,把什么叫“逐个写入”用代码解释一下Top
4 楼gzmhero(hihihi)回复于 2006-03-09 10:26:45 得分 40
试下下面的代码:
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);
Top
5 楼wvins(逸岚)回复于 2006-03-09 10:45:32 得分 0
不错啊!
学习一下
delphi中也有copymemory的啊!
Top
6 楼myth_2002(myth)回复于 2006-03-09 11:04:12 得分 0
可以阿,多谢gzmheroTop




