数组赋值(100)

  • 主题发起人 主题发起人 zxy666666
  • 开始时间 开始时间
Z

zxy666666

Unregistered / Unconfirmed
GUEST, unregistred user!
请问我有两个数组,同类型.如varA,B:array[0..3] of Integer;i : Integer;begin A[0] := '1'; A[1] := '2'; A[2] := '3'; A[3] := '4'; //我想要数组B与A的赋值一样 //请问简单方式要如何写? B := A ; //这样写错误// 注:我不要下面for循环的方式 for i :=0 to 3 do begin B := A; end;end;
 
Move(A[0], B[0], Length(A) * SizeOf(Integer));
 
CopyMemory(@B, @A, Length(A) * SizeOf(Integer));
 
liuls,您好!非常感谢你的回答~~经测试当数组类态为Integer和String没问题.但是若为Double就会有问题了. 我用Showmessage(Floattostr(B[2])和B[3]的结果会与A[2],A[3]的值不同.怎么回事啊?另可否请问一下Move的第三个参数:Length(A) * SizeOf(Integer)是什么意思,谢谢~~~
 
liuls,smlabc谢谢您们~经再次测试,只要将第三个参数,按数组类型变更就好了,呵呵~~
 
是的. CopyMemory(@B, @A, Length(A) * SizeOf(Integer)); 和 Move(A[0], B[0], Length(A) * SizeOf(Integer)); 拷贝的 Count 都是以字节为单位的, 所以 每种类型 所占字节数为 SizeOf(数据类型)
 

Similar threads

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