真*高手请进,一个传输文件结构的问题,new 的 对象传不了(100分)

  • 主题发起人 主题发起人 gsgs1199
  • 开始时间 开始时间
G

gsgs1199

Unregistered / Unconfirmed
GUEST, unregistred user!
有一段代码,在一个工程中运行是可以把自己定义的结构从
SERVER传送到CLIENT的(即TSERVERSOCKET和TCLIENTSOCKET控件在一个TFORM内);
但是分成2个工程后(即即TSERVERSOCKET和TCLIENTSOCKET控件不在一个TFORM内)就不行了。
但是结构中的 int iCount 等可以传送正确 但 char * 等就不对了,问题就是这样。
程序片段如下:
typedef struct{[:D][:D][:D]
int iCount;
char *Buf;
} S;

S *sSendStruct=new S;
sSendStruct->iCount=777;
sSendStruct->Buf=new char [MAXSENDSIZE];

pf=new TFileStream("c://1.avi",fmOpenRead);
pf->Read(sSendStruct->Buf,MAXSENDSIZE);
SS->Socket->Connections[0]->SendBuf(sSendStruct,sizeof(S)+MAXSENDSIZE);
//(关键是上面这一句,sSendStruct中的内容是正确的, sSendStruct->iCount可以发送正确
//但是 sSendStruct->Buf就是发送不正确,为什么呢?)
delete pf;
delete sSendStruct;

有研究过的高手赐教吗?小弟先行拜谢!

 
SendBuf(*sSendStruct,sizeof(S)+MAXSENDSIZE);
 
什么啊?sSendStruct已经是指针了,前面在加*就编译错误了。
SENDBUF(VOID*,COUNT)是SENDBUF原形
 
有人回答吗?回答了有分的
 
typedef struct{
int iCount;
char Buf[MAXSENDSIZE];
} S;
这样才是对的
 
你发出的数据中不能有指针类型,这和COM的列集和散集一个道理...
 
谢谢张无忌了;但是有没有办法解决这个问题呢,因为我的Buf[MAXSENDSIZE]中的MAXSENDSIZE
是动态的,可以解决吗?
 
S *sSendStruct= (S *)malloc(MAXSENDSIZE+sizeof(int));
//我随手写的,这样才行
 
喔...,好的,我去试试
 
残念:(
要是实在不行的话,我自己再好好想想。
如果你有什么好的办法请告之,谢谢了!
分先给你一部分
 
后退
顶部