相关疑难解决方法(0)

如何在Delphi记录中模拟位域?

我想在Delphi中声明一个包含与C中相同布局的记录.

对于那些感兴趣的人:此记录是Windows操作系统的LDT_ENTRY记录中的联合的一部分.(我需要在Delphi中使用此记录,因为我正在使用Delphi中的Xbox模拟器 - 请参阅sourceforge上的项目Dxbx).

无论如何,有问题的记录定义为:

    struct
    {
        DWORD   BaseMid : 8;
        DWORD   Type : 5;
        DWORD   Dpl : 2;
        DWORD   Pres : 1;
        DWORD   LimitHi : 4;
        DWORD   Sys : 1;
        DWORD   Reserved_0 : 1;
        DWORD   Default_Big : 1;
        DWORD   Granularity : 1;
        DWORD   BaseHi : 8;
    }
    Bits;
Run Code Online (Sandbox Code Playgroud)

据我所知,Delphi中没有可用的位域.我试过这个:

 Bits = record
      BaseMid: Byte; // 8 bits
      _Type: 0..31; // 5 bits
      Dpl: 0..3; // 2 bits
      Pres: Boolean; // 1 bit
      LimitHi: 0..15; // 4 bits
      Sys: Boolean; …
Run Code Online (Sandbox Code Playgroud)

delphi record bit-fields

25
推荐指数
3
解决办法
1万
查看次数

标签 统计

bit-fields ×1

delphi ×1

record ×1