Cómo se relacionan entre sí los tipos básicos de Delphi?
Delphi siempre ha admitido algunos tipos numéricos básicos y me preguntaba cómo se relacionan entre sí.
En Delphi 2007 encontré estas declaraciones (algunas son conflictivas, otras son simples alias):
Types.pas:
DWORD = LongWord;
Largeint = Int64;
getmem.inc:
DWORD = Integer;
Windows.pas:
DWORD = Types.DWORD;
SHORT = Smallint;
UINT = LongWord;
ULONG = Cardinal;
LONGLONG = Int64;
TLargeInteger = Int64;
ULONGLONG = UInt64;
Esto me lleva a pensar que los tipos numéricos con signo base son SmallInt, Integer e Int64. Sin firmar, hay Byte, WORD y UInt64. Pero, ¿cuál es la diferencia entre Cardinal y LongWord? (Por cierto, ¿cuál es la carcasa original y prevista para estos tipos?)
¿Y hay un tipo para enteros de 8 bits con signo (Int8)?
// Int8 = ?unknown?;
UInt8 = Byte;
Int16 = SmallInt;
UInt16 = Word;
Int32 = Integer;
UInt32 = LongWord;
// Int64 already exists
// UInt64 already exists
Por último, ¿cómo debo definir Int y UInt, especialmente con respecto a la compatibilidad C / C ++ y un cambio futuro a otras plataformas (posiblemente también de 64 bits)? (Una pregunta relacionada es, por supuesto, ¿cómo se definirán los distintos tipos numéricos en Delphi de 64 bits?)