2

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

我想什么

  1. TBits 不仅仅是一个简单的布尔值集合和
  2. 内部存储是连续的。

我对这些假设是否正确?

4

1 回答 1

9
  1. 正确,TBits内部是位结构的,所以它不是一个简单的布尔集合。
  2. 是的,存储是通过分配足够大的连续内存来处理的(以 SizeOf(integer) 为增量)。

要获得对内部数据指针的访问,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;
于 2012-07-07T14:58:51.210 回答