Delphi 组合多个TB阵列的最佳方法

Delphi 组合多个TB阵列的最佳方法,delphi,bytearray,delphi-xe2,Delphi,Bytearray,Delphi Xe2,组合t字节数组的最佳方法是什么 所有数组的大小都相同。我希望将Array2的内容添加到Array1的末尾,Array3添加到Array2的末尾,依此类推。要将两个TBytes合并在一起,必须分配第三个TBytes,即两个TBytes的总长度,然后将两者的字节复制到其中。例如: var arr1, arr2, merged: TBytes; begin ... SetLength(merged, Length(arr1) + Length(arr2)); if arr1 <&

组合
t字节
数组的最佳方法是什么


所有数组的大小都相同。我希望将
Array2
的内容添加到
Array1
的末尾,
Array3
添加到
Array2
的末尾,依此类推。

要将两个
TBytes
合并在一起,必须分配第三个
TBytes
,即两个
TBytes
的总长度,然后将两者的字节复制到其中。例如:

var
  arr1, arr2, merged: TBytes;
begin
  ...
  SetLength(merged, Length(arr1) + Length(arr2));
  if arr1 <> nil then Move(arr1[0], merged[0], Length(arr1));
  if arr2 <> nil then Move(arr2[0], merged[Length(arr1)], Length(arr2));
end;
var
arr1,arr2,合并:t字节;
开始
...
集合长度(合并,长度(arr1)+长度(arr2));
如果arr1为nil,则移动(arr1[0],合并[0],长度(arr1));
如果arr2为nil,则移动(arr2[0],合并[长度(arr1)],长度(arr2));
结束;

您可以使用类似字符串的操作:

var
  LArray1, LArray2, LMerged: TBytes;
begin
  ...
  LMerged := LArray1 + LArray2;
end;
或者您可以使用系统“Concat”功能:

var
  LArray1, LArray2, LMerged: TBytes;
begin
  ...
  LMerged := Concat(LArray1, LArray2);
end;

定义“合并”。你的意思是将一个附加到另一个的末尾,还是混合(array1[0],array2[0],array1[1],array2[1])?它们大小一样吗?请编辑您的问题,以便更清楚地了解您的意图,以便我们能够尝试并帮助您。谢谢。:)所有数组的大小都相同,我想要像这样的数组1追加数组2追加数组3…..这并没有回答所问的问题,特别是如何
在数组中循环
。我把这个问题理解为询问如何循环数组列表,不是如何循环特定数组的内容。我不确定它是如何循环的。“如何通过循环来合并TBytes数组。”-“合并…通过循环来合并TBytes数组”的哪一部分说“循环数组列表”?如果问题是“我如何修理法拉利的燃油喷射系统”,答案不是“买一辆混合动力车——它们对环境更有利”(尽管在回答最初的问题后,这可能是一个有效的(可能更好的)替代方案)。:)“通过他们”有点模棱两可。它可能意味着“通过它们的集合”,也可能意味着“通过它们的内容”。我认为Vinamra需要澄清这个问题,而不是XE2,因为XE2是问题的标签。