假设数据包格式:
type
TCmd = packed record
FHead: array[0..1] o Byte;
FData: array[0..7] o Byte;
FSum: Byte;
FTail: Byte;
end;var
CurCmd: TCmd;
在发送过程中SendCmd:procedure SendCmd;
var
p: PChar;
begin
p := PChar(@CurCmd); Comm_Send(p, SizeOf(TCmd)); //发送成功的;end; 现在如果把CurCmd的内容存放到一个数组里,再处理好象就有问题了:
procedure test;
var
p: PChar;
tmpCmd: TCmd;
tmpArray: Array[0..200] of char;
begin
p := PChar(@CurCmd); //
move(p^, tmpCmd, SizeOf(TCmd)); //复制到相同结构的内存, OK;
move(p^, tmpArray, SizeOf(TCmd)); //复制到数组, 内容并非我期望的内容,数组前面元素好象是CurCmd的 地址数据;
Comm_Send(tmpArray, SizeOf(TCmd)); //发送内容当然不正确了。
end;问题:在不用一个一个赋值的前提下,我怎样使得:
1、将结构中的数据写入Array;
2、将Array中的内容转化为TCmd。
type
TCmd = packed record
FHead: array[0..1] o Byte;
FData: array[0..7] o Byte;
FSum: Byte;
FTail: Byte;
end;var
CurCmd: TCmd;
在发送过程中SendCmd:procedure SendCmd;
var
p: PChar;
begin
p := PChar(@CurCmd); Comm_Send(p, SizeOf(TCmd)); //发送成功的;end; 现在如果把CurCmd的内容存放到一个数组里,再处理好象就有问题了:
procedure test;
var
p: PChar;
tmpCmd: TCmd;
tmpArray: Array[0..200] of char;
begin
p := PChar(@CurCmd); //
move(p^, tmpCmd, SizeOf(TCmd)); //复制到相同结构的内存, OK;
move(p^, tmpArray, SizeOf(TCmd)); //复制到数组, 内容并非我期望的内容,数组前面元素好象是CurCmd的 地址数据;
Comm_Send(tmpArray, SizeOf(TCmd)); //发送内容当然不正确了。
end;问题:在不用一个一个赋值的前提下,我怎样使得:
1、将结构中的数据写入Array;
2、将Array中的内容转化为TCmd。
解决方案 »
- d7怎么取得adoconnection.connectionstring中的服务器
- TWWDBlookupcombox有沒有什麼方法,可以判斷它狀態是正處在下拉狀態,droping.
- ★★★锁定计算机 (Lock Workstation) 时程序出现Win32错误,不知何故?★★★
- access数据库问题
- 在DELPHI中,怎样检测SQL SERVER 2000中某个数据库是否存在?
- 讨论关于控件制作过程中的WINDOWS消息及构件消息!
- 关于EHLIB4.1.4编译时的问题,请进。。。
- 各位大哥,能帮小妹看看这段查询代码吗??
- 图片数据库的相似性对比
- 请问怎样声明全局变量?能够在任何窗体都可以调用它。
- 怎么吃点消息???
- hook住系统登录输入密码框?
FHead: array[0..1] o Byte;
FData: array[0..7] o Byte;
FSum: Byte;
FTail: Byte;
end; 这样的结构,直接Copy(Move)