如何把一个结构性数据的值通过copy内存给一个数组赋值(50分)

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

hansland

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把一个结构性数据的值通过copy内存给一个数组赋值,如
type
data1=record
x1:byte;
x2:array[0..3]of byte;
end;
data1.x1:=$03;
data1.x2:={$01,$09,$ef,$f0};
要把它给一个数组 data2:array[0..5]of byte赋值,如何用拷贝内存的方式实现,请各位大侠帮助,多谢!
 
type
data1 = record
x1: byte;
x2: array[0..3] of byte;
end;
pData1 = ^data1;
data2 = array[0..5] of byte;
pData2 = ^data2;
procedure TForm1.Button1Click(Sender: TObject);
var
mydata1: Data1;
pmydata1: pData1;
mydata2: Data2;
pmydata2: pData2;
begin
FillChar(mydata2, length(mydata2), 0);
mydata1.x1 := $03;
mydata1.x2[0] := $01;
mydata1.x2[1] := $09;
mydata1.x2[2] := $ef;
mydata1.x2[3] := $f0;
pmydata1 := @mydata1;
pmydata2 := @mydata2;
CopyMemory(pmydata2, pmydata1, 5);
if mydata2[0] <> 0 then
showmessage('a');
end;
 
...
结构类型变量,你上面的代码有误
type
data=record
x1:byte;
x2:array[0..3]of byte;
end;

var
data1:data;
data2:array[0..5]of byte;
P1,P2:Pointer;
begin
data1.x1:=$03;
data1.x2:={$01,$09,$ef,$f0};//这里也不对,先这么那你的意思表达吧。
P1:=@Data1;
P2:=@Data2[0];
move(P1^,P2^,6);
caption:=Char(data2[0])+Char(data2[1])+Char(data2[2])+Char(data2[3])+
Char(data2[4])+Char(data2[5]);//这个是测试,注意这里显示的是字符(ASCII),而非简单的数字转换字符。
end;
 
无需借助指针,直接用 move(data1,data2[0],SizeOf(data1));
即可。(要保证Data2的
长度足够大)
 
creation-zy, 强!!!
 
多人接受答案了。
 
后退
顶部