用socket传送一个结构出现了问题!!(100分)

  • 主题发起人 主题发起人 ilovezlaner
  • 开始时间 开始时间
I

ilovezlaner

Unregistered / Unconfirmed
GUEST, unregistred user!
主要源代码如下:
//客户端
type
//定义一个记录
check_user_server=record
card_num:string;
gua_shi:string;
run_flag:string;
card_money:string;
end;
...
var
user_infor:check_user_server;
...
user_infor.card_num:='555';
user_infor.gua_shi:='0';
user_infor.run_flag:='下机';
user_infor.card_money:='5.5';
check_c.Socket.SendBuf(user_infor,sizeof(user_infor));//发送成功
.....

//服务器端
type
//定义一个记录
check_user_server=record
card_num:string;
gua_shi:string;
run_flag:string;
card_money:string;
end;
...
var
user_infor:check_user_server;
tmp:string;
...
socket.ReceiveBuf(check_user,socket.ReceiveLength);//接收过程没有报错
tmp:=check_user.card_num;//{这里就报错,我跟踪变量发现check_user.card_num根本就
没有被赋值,我不知道是哪个地方错了。。}
 
你试着直接显示一下sizeof(user_infor)看看?
无论你赋什么值,都是16。
这是因为string实际上是一个指针。
如果你还是希望这么做,可以改一下结构定义。
例如:
check_user_server=record
card_num:string[50];
gua_shi:string[50];
run_flag:string[50];
card_money:string[50];
end;

这就是长字符串和短字符串的区别
 
delphi兄弟:
你分析得太精辟了!立马给分!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
545
import
I
后退
顶部