求如下函数:
相同结构数组之间的相加
删除数组中的元素

解决方案 »

  1.   

    是的,
    例如:
    var
      A, B: array of TMyRecord;  如何在A的后面添加B?
      另外如何删除A中的某元素?
      

  2.   

    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;
      

  3.   

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

  4.   

    一种办法是做类型转换,然后用上面的函数一种办法是把上面的函数改造一下: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;
      

  5.   

    删除指定的元素要麻烦一点,
    一个做法是复制指定位置前的元素和指定位置后的元素,
    然后合并两个新的为一个数组另一个做法是指定位置的数据和后面的元素进行值交换,
    然后用SetLength重新指定长度