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

标签 delphi pointers dynamic-arrays lazarus freepascal

我定义了一个大型的动态数组数组。现在,要有第二个数组bArray标记数组中的某个区域而不是副本!

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;

最佳答案

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

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

关于delphi - 如何从TByteArray类型获取数组作为TByteArray类型较大数组的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669636/

相关文章:

delphi - 两种形式相互咬合

delphi - 如何以Threaded方式处理Log

c - 删除 BST 中的节点而不具有指向其父节点的指针

C 动态增长数组

c - 在 C 中创建动态矩阵的方法?

java - Delphi 有 block 标签吗?

Delphi函数将WrapText的Result转换为TStringList

c++ - 指针在类成员函数中没有被修改

c - 为什么 "struct T* next"在 T 不是现有类型时编译?

c++ - 不确定,为什么这段代码在扫描动态分配的数组时导致段错误