UDP发送记录体->动态数组 ( 积分: 100 )

  • 主题发起人 主题发起人 hzjzxp
  • 开始时间 开始时间
H

hzjzxp

Unregistered / Unconfirmed
GUEST, unregistred user!
type Tpacket=record
mode:integer;
ConWord:string[4];
array_str:array of string;
end;
发送代码
var
sendpacket:Tstpacket;
len:integer;
begin
sendpacket.mode:=0;
setlength(sendpacket.array_str,2);
sendpacket.array_str[0] := 'h';
sendpacket.ConWord[0] := '1234';
len:=sizeof(sendpacket);
IdUDPClient1.SendBuffer(sendpacket,len);
end;
在IdUDPServer1UDPRead
var
revpack:Tstpacket;
begin
adata.ReadBuffer(revpack,adata.size);
showmessage(revpack.array_str[0]);
end;
显示空白,不知道为什么, 当array_str:array of string;为array_str:array of [0..2]string;为静态数组是可以收到!
想问一下UDP的动态数据是这样实现的.
 
>>不知道为什么, 当array_str:array of string;为array_str:array of [0..2]string;为静态数组是可以收到!

因为静态数组是RawData,动态数组是指针。另外,你的结构没有用packed来修饰,所以在不同的机器和操作系统下,内存对齐的影响会产生严重后果。
 
我在我本机上都收不到.
那我应该怎么处理动态数组?
 
接受答案了.
 
后退
顶部