Moin S11,
schreib es mal so:
filestream.Read(buffer[0], size);
Wenn Du nicht auf den ersten Wert [0] zugreifst, schreibst Du nicht in den Buffer sondern überschreibst den Wert der Variablen und alles was dahinter steht.
(das ist, glaube ich, der "beliebteste" (häufigste) Fehler beim TFileStream
)