me gustaría declarar un registro en Delphi que contiene la misma disposición que tiene en C.¿Cómo se simulan los campos de bits en los registros Delphi?
Para los interesados: Este disco forma parte de un sindicato en el registro LDT_ENTRY del sistema operativo Windows. (Necesito usar este registro en Delphi porque estoy trabajando en un emulador de Xbox en Delphi - ver proyecto Dxbx en sourceforge).
De todos modos, el registro en cuestión se define como:
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;
Por lo que yo sé, no hay campos de bits posibles en Delphi. Yo probé esto:
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; // 1 bit
Reserved_0: Boolean; // 1 bit
Default_Big: Boolean; // 1 bit
Granularity: Boolean; // 1 bit
BaseHi: Byte; // 8 bits
end;
Pero, por desgracia: su tamaño llega a ser de 10 bytes, en lugar de los 4. esperada Me gustaría saber cómo debo declarar el registro, por lo que consigo un registro con el mismo diseño , el mismo tamaño y los mismos miembros Preferiblemente sin cargas de getter/setters.
TIA.
¡Es una muy buena idea! – gabr
Gracias por el cumplido. Cometí algunos errores en el código, que he solucionado ahora, ¡Salud! – PatrickvL
Gracias, esto es muy útil. "Flags" no debe ser un tipo entero? – JustMe