In Delphi2009 e più nuovo (così il vostro ugualmente), la stringa non è più di 1 byte per carbone, ma byte multipli.
Così, mentre
varietà
Identificazione: Stringa [10];
Assomiglia ad un allineamento di 10 byte, esso non è.
Così se fate
aStream.Read (identificazione [1], 10);
Leggete 10 byte in un allineamento che è allora 10 byte più lunghi. Il risultato è che non conoscete che cosa è nel resto dell'allineamento. Ci è probabilmente una certa schifezza in là che è interpretata come stringa quando provate a metterli nella pubblicazione.