Hola atani123.
Es tál como te indica
juanelo, para un acceso mas veloz,
Delphi alinea las estructuras a palabra o doble palabra. Podes comprimir el almacenamiento de datos usando la palabra reservada
packed sobre el registro o de manera global usando la directiva
{$A-}. Pero hace mas lento el acceso y puede traer incompatibilidad en el caso de que los datos sean caracteres.
El efecto se puede comprobar facilmente:
Código Delphi
[-]
type
rec1 = record
factor: Single;
offset: Single;
id : SmallInt;
end;
rec2 = packed record
factor: Single;
offset: Single;
id : SmallInt;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
r1: rec1;
r2: rec2;
begin
with ListBox1.Items do
begin
Add('rec1 (record)');
Add('-------------');
Add(Format('factor: %d',[SizeOf(r1.factor)]));
Add(Format('factor: %d',[SizeOf(r1.offset)]));
Add(Format('factor: %d',[SizeOf(r1.id)]));
Add(Format('Total: %d',[SizeOf(r1)]));
Add('');
Add('rec2 (packed record)');
Add('-------------');
Add(Format('factor: %d',[SizeOf(r2.factor)]));
Add(Format('factor: %d',[SizeOf(r2.offset)]));
Add(Format('factor: %d',[SizeOf(r2.id)]));
Add(Format('Total: %d',[SizeOf(r2)]));
end;
end;
Saludos
