Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Extrañísimo problema con un registro (https://www.clubdelphi.com/foros/showthread.php?t=23417)

leandro_tami 16-07-2005 01:12:00

Extrañísimo problema con un registro
 
Hola. Tengo un problema que está acabando con mi paciencia, y realmente no comprendo porqué está ocurriendo.
Resulta que tengo un tipo de dato como éste:
Código:

  type
    TPACFileHeader = record
          sig: array [0..2] of char;
          ver: word;
          width: byte;
          height: byte;
          spc: byte;
          gpc: byte;
    end;

Haciendo las cuentas, cada registro de este tipo debe ocupar 9 bytes. Pero la función sizeof() me dice que tiene 10. No solo eso. Cuando escribo en un archivo este registro (usando un TFileStream o bien con una variable de tipo archivo), ¡me intercala un byte = 0 entre sig y ver!. O bien esto es un bug del compilador o tengo la solución frente a mis ojos y no la veo!

edit: estoy usando Delphi 7

jlibaval 16-07-2005 01:54:06

Declaracio de Record
 
:rolleyes:
type


TPACFileHeader = record
sig: array [0..2] of char;
ver: word;
width: byte;
height: byte;
spc: byte;
gpc: byte;
end;


By default, the values in a structured type are aligned on word or double-word boundaries for faster access. When you declare a structured type, you can include the reserved word packed to implement compressed data storage



el compilador lo pone en palabras dobles por eso

lo acomoda a 10 bytes





Utilizalo de la siguiente manera


TPACFileHeader = Packed record
sig: array [0..2] of char;
ver: word;
width: byte;
height: byte;
spc: byte;
gpc: byte;
end;

leandro_tami 16-07-2005 05:09:47

SSSSSssssssiiii!!!!!
Muchísimas gracias, el motivo era ése.
Aún tengo más horas con Turbo Pascal que con Delphi, supongo. :D


La franja horaria es GMT +2. Ahora son las 06:48:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi