que tienen código siguiente:¿Por qué el tamaño de un registro no es igual a la suma de los tamaños de sus campos?
type TRecord1 = record
myarr: array [0..31] of single:
end;
type TRecord2 = record
b1, b2, b3, b4, b5, b6: byte;
end;
type TRecord3 = record
myarr: array [0..31] of single:
b1, b2, b3, b4, b5, b6: byte;
end;
procedure TForm1.FormCreate(Sender: Tobject);
begin
ShowMessage(IntToStr(SizeOf(TRecord1))+'+'+IntToStr(SizeOf(TRecord2))+
'='+IntToStr(SizeOf(TRecord3)));
end;
El programa muestra el siguiente mensaje:
128+6=136
¿Por qué es SizeOf(TRecord3)
igual a 136 en lugar de 134?
regla de oro: si está planeando usar algunas estructuras con archivos, declare que están '' empaquetadas ''. – OnTheFly
Mi regla empírica sería nunca escribir representaciones binarias de registros en el archivo –
Sí, evite almacenar datos binarios, pero la directiva empaquetada tiene su uso cuando se pasan registros durante E/S (dll, comunicación en serie, etc.). Sin embargo, se deben aplicar técnicas de conversión binarias/cadenas estandarizadas para nuevos desarrollos. –