求关于动态数组的快速函数解决方法

求关于动态数组的快速函数
求如下函数:
相同结构数组之间的相加
删除数组中的元素

------解决方案--------------------
procedure TForm1.Button1Click(Sender: TObject);
type
TMyRecord = record
C: Integer;
D: Integer;
end;
var
A,B: array of TMyRecord;
P: ^TMyRecord;
begin
SetLength(A,4);
SetLength(B,2);
A[0].C := 1;
A[0].D := 2;
A[1].C := 3;
A[1].D := 4;
B[0].C := 5;
B[0].D := 6;
B[1].C := 7;
B[1].D := 8;
P := @A[2];
CopyMemory(P,@B[0],SizeOf(TMyRecord)*2);
ShowMessage(IntToStr(A[0].C));
end;
------解决方案--------------------
一种办法是做类型转换,然后用上面的函数

一种办法是把上面的函数改造一下:

type
TMyRecord = record
end;

TMyRecordArray = array of TMyRecord;

procedure AppendBuffer(Source : TMyRecordArray;var Dest : TMyRecordArray);
begin
SetLength(Dest,Length(Source)*SizeOf(TMyRecord)+Length(Dest)*SizeOf(TMyRecord));
Move(Source[0],Dest[Length(Dest)-Length(Source)],Length(Source)*SizeOf(TMyRecord));
end;