我可以访问TBits内部位图吗?

OnT*_*Fly 2 delphi bits

特别是,我想预设所需的大小,从外部源获取位图,然后以优雅的面向对象的方式处理数据.

我猜是什么

  1. TBits不仅仅是一个直接的布尔和
  2. 内部存储是连续的.

我有这样的假设吗?

LU *_* RD 9

  1. 正确,TBits内部是位结构的,因此它不是一个简单的布尔集合.
  2. 是的,存储是通过分配大到足以承载大小的连续内存来处理的(以SizeOf(整数)为增量).

要访问内部数据指针,class helpers可以使用.

Type
  TBitsHelper = class helper for TBits
    private
      function GetBitsPointer: Pointer;
    public
      property BitsPt: pointer read GetBitsPointer;
  end;

function TBitsHelper.GetBitsPointer: Pointer;
begin
  with Self do Result := FBits;  
end;
Run Code Online (Sandbox Code Playgroud)