如何从类型 TByteArray 获取数组作为类型 TByteArray 的更大数组的一部分?

How to obtain an array from type TByteArray as part of a larger array from type TByteArray?

我定义了一个大类型的动态数组aArray。现在想要第二个数组 bArray 标记 aArray 中的某个区域而不需要复制!

type
  TByteArray = array of Byte;

implementation

procedure SomeCode;
var 
  aArray : TByteArray;
  bArray : TByteArray;
begin
  setlength(aArray, 30);
  aArray[4] := 12;
  // here want to have bArray to hold 20 Bytes starting from Byte 5 in aArray 
  if bArray[0] = aArray[4] then begin
    writeln('All OK'); 
  end;

end;

这是不可能的。动态数组包含位于数组第一个元素之前的元数据。这与您想要第一个元素位于另一个数组中间的动态数组不兼容。

您可能需要使用指向子数组第一个元素的指针来解决您的问题。