Note to self: TStream.Read in the Delphi RTL returns the number of bytes read. It does not check whether the intended number of bytes could actually be read. So if you do not check it yourself, call TStream.ReadBuffer instead. So, it's either: [delphi] var st: TFileStream; Buffer: array[0..7] of Byte; BytesRead: Integer; begin st := … Continue reading Delphi’s TStream.Read returns the number of bytes read