Hallo,
Code:
datei := tfilestream.Create(opendialog1.FileName,fmopenread);
--> setlength(buffer,count);
wo wird Count initialisiert, bzw. welchen Wert hat die Variable? Wenn Count<0 dann kann ich mir durchaus vorstellen, dass dann Read fehlschlägt.
Ausserdem ist per Definition der Rückgabewert von Read ein LongInt. Ändere die Variable r entsprechend.