socket api 实现传递数据的问题?(100分)

  • 主题发起人 主题发起人 leaber
  • 开始时间 开始时间
L

leaber

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中需要传送记录,结构如下: 尝试了很多次无法成功。请大家指教!
TTest= record
name:string;
sex :string;
age :integer;
end;
TTry= record
id: integer;
ss: TTest;
end;
PTry=^TTry;
 
按字符串传可以吗?

// 生成TTest的描述串
function GetTTestString(t:TTest):string
var
strs: TStringList;
begin
strs := TStringList.Create;
try
strs.Add(t.name);
strs.Add(t.sex);
strs.Add(t.age);
Result := strs.CommaText;
finally
strs.Free;
end;
end;

// 分解字符串到TTest
function SetTTestString(var t:TTest; text: string): boolean;
var
strs: TStringList;
begin
strs := TStringList.Create;
try
try
strs.CommaText := text;
t.Name := strs.Strings[0];
t.Sex := strs.Strings[1];
t.age := StrToInt(strs.Strings[2]);
except
end;
finally
strs.Free;
end;
end;

// 发送TTest
var
text: string;

text := GetTTestString(test);
send(PChar(text), length(text));

// 接收
recv(buf, n);
text := buf;
SetTTestString(t, text);

--TTry也可如法炮制
 
TTest= record
name:array[0..9] of char;
sex :array[0..9] of char;
age :integer;
end;
TTry= record
id: integer;
ss: TTest;
end;
PTry=^TTry;
 
为什么STRING 不可以呢?
 
SizeOf(String) = 4;也就是說String相當是一個指針,并不沒有數據存放.
 
好!解决问题且一语中的!
干!想不给分也难呀,结帐!
 

Similar threads

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