type
TAPoint = array of TPoint;
………………
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:TAPoint;
begin
setlength(a,1);
setlength(b,2);
setlength(c,0);
a[0]:=point(1,1);
b[0]:=point(1,11);
b[1]:=point(1,100);
Move(a,c,Sizeof(c));
Move(b,c,Sizeof(c));
//c:=copy(a,0,Sizeof(TPoint)*(High(a)+1));
//c:=copy(b,0,Sizeof(TPoint)*(High(b)+1));
end;
上面的copy,move都不行,都把数组a的内容覆盖了。
TAPoint = array of TPoint;
………………
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:TAPoint;
begin
setlength(a,1);
setlength(b,2);
setlength(c,0);
a[0]:=point(1,1);
b[0]:=point(1,11);
b[1]:=point(1,100);
Move(a,c,Sizeof(c));
Move(b,c,Sizeof(c));
//c:=copy(a,0,Sizeof(TPoint)*(High(a)+1));
//c:=copy(b,0,Sizeof(TPoint)*(High(b)+1));
end;
上面的copy,move都不行,都把数组a的内容覆盖了。
a,b,c:TAPoint;
begin
setlength(a,1);
setlength(b,2);
//setlength(c,0);
a[0]:=point(1,1);
b[0]:=point(1,11);
b[1]:=point(1,100);
setlength(c,3);
CopyMemory(@c[0], @a[0], sizeof(TPoint));
CopyMemory(@c[1], @b[0], sizeof(TPoint)*2);
end;
setlength(b,2);
setlength(c,0);
a[0]:=point(1,1);
b[0]:=point(1,11);
b[1]:=point(1,100); CopyMemory(c, a, Sizeof(TPoint)*(High(a)+1));
CopyMemory(@(c[High(a)+1]), b, Sizeof(TPoint)*(High(b)+1));
在程序中比举的例子复杂多了,主要是要拷贝的内存大小跟起始地址不好确定。
type
TDPoint = record
X,Y:double;
end;
TAPoint = array of TDPoint
TADouble = array of Double;
TLine = class
public
Selected : boolean;
LineColor:TColor;
a1 : TAPoint;
a2 : TAPoint;
pointangle:TADouble;
pointlongth:TADouble;
constructor Create;
end;
begin
Line1:=LineList[i];
CopyMemory(@Line2.c1[XX],@Line1.a1[XX],XX)
CopyMemory(@Line2.c2[XX],@Line1.a2[XX],XX)
end;XX 很难确定阿,谁帮我研究下,给十分。哈哈