Ich wollte gerade das selber testen, da habe ich den Fehler gefunden:
Delphi-Quellcode:
Buffer := TMemoryStream.Create;
Reg.ReadBinaryData(SSetVSTObjectsHeader, Buffer, Buffer.Size); // <---- Hier ist der Fehler.
Folgendes Problem existiert:
Du createst eine TMemoryStream Instanz.
Dann ist
Buffer.Size = 0
Jetzt liest du
NULL Bytes aus der Registry in einen Buffer
Es ist zwar anders als ich erst vermutete aber in einem hatte ich Recht:
Der MemoryStream ist leer
Ausweg:
Nutze statt TRegistry die Klasse TRegistryIniFile.
Da hast du zwei Methoden Namens WriteBinary
Stream und ReadBinary
Stream. Damit hast du keine Probleme (das nutze ich in einem Programm selber).
Oder du speicherst in einem anderen Key die Größe des Headers und liest die dann aus, bevor du die Daten lädst.