Da hast du einen Fehler gemacht, den ich Anfangs auch immer gemacht habe.
Delphi-Quellcode:
if Reg.ValueExists(SSetVSTObjectsHeader) then
begin
Buffer := TMemoryStream.Create;
Reg.ReadBinaryData(SSetVSTObjectsHeader, Buffer, Buffer.Size);
// Buffer.Position ist jetzt auf Position buffer.size.
// Daher musst du die Position zurücksetzen
buffer.position := 0;
// Jetzt sollte es gehen
VSTObjects.Header.LoadFromStream(Buffer);
Buffer.Free;
end;
Siehe Kommentare im Code.
Ich vermute mal, dass VSTObjects.Header.LoadFromStream die Position nicht zurücksetzt.
Da aber die Position von buffer auf buffer.size steht, wird nicht kopiert
VSTObjects.Header.LoadFromStream(Buffer);
liefert einen leeren Stream, der natürlich keine Header-Informationen besitzt...