SoloCodigo
Programación General => Pascal => Mensaje iniciado por: aguila3000 en Viernes 4 de Enero de 2008, 16:22
-
Estuve leyendo el manual de freepascal y existen estos tipos de datos boolean :
Boolean 1 byte
ByteBool 1 byte
WordBool 2 byte
LongBool 4 byte
Podria alguien decirme que utilidad pueden tener wordbool y longbool.
Att.
aguila3000
-
Están por cuestion de compatibilidad con algunos sistemas, cirtas estructuras, facilitar el alineamiento,etc...
Como ejemplo:
TRecord = record
a: Integer;
b: Integer;
c: Integer;
z: LongBool;
end;
Con esto, la estructura queda alinieada a 4 bytes lo que hace mas rapido ciertos movimientos de datos aunque se desperdicie 35 bits.
-
:blink:
Gracias.
Pero podrias explicarme un poco mejor tu ejemplo, para facilitar el alineamiento.
Att.
aguila3000
-
TRecord = packed record
a: Integer;
b: Integer;
c: Integer;
z: Boolean;
end;
esta estructura ocuparía 13 Bytes y si usas simplemente
TRecord = packed record
a: Integer;
b: Integer;
c: Integer;
z: Boolean;
end;
segun el compilador y su configuracion, podría ocupar 13 o 16 bytes por el alineamiento.
Por ejemplo si trabajas con estructuras dinamicas de datos, cuando le pides al sistema operativo 13 Bytes, va seguramente tardar más tiempo reservar la memoria que si fueran los 16 bytes. (es más, lo más probable es que te reserve 16 y solo se usen los 13 bytes) por eso a veces es bueno alenear.
Cuando tienes que trabajar con estructuras hechas en otros lenguajes puede ocurrir que Boolean no ocupe 1 Byte, por eso que por Posibilidad de compatibilidad estan los otros tipos.
-
ok, gracias por tu ayuda
att.
aguila3000