3bobry
Mam mały problem z takim oto kodzikiem, bo muszę zapisać zawartość strumienia do rejestru:
var globalne to:
Reg : TRegistry;
Buf : array of byte;
Stream : TMemoryStream;
i dalej tak:
Reg := TRegistry.Create;
Stream := TMemoryStream.Create;
try
Reg.OpenKey('Software\Misieksoft\TEST', True);
// RichEdit1
Stream.Clear;
RichEdit1.Lines.SaveToStream(Stream);
Stream.Position := 0;
{1} SetLength(Buf,Stream.Size);
Stream.Read(Buf,Stream.Size);
Reg.WriteInteger('TestSize',Stream.Size);
Reg.WriteBinaryData('TestText',Buf,Stream.Size);
// RichEdit2
{2} Buf := nil;
Stream.Clear;
RichEdit2.Lines.SaveToStream(Stream);
Stream.Position := 0;
{3} SetLength(Buf,Stream.Size);
Stream.Read(Buf,Stream.Size);
Reg.WriteInteger('Test2Size',Stream.Size);
Reg.WriteBinaryData('Test2Text',Buf,Stream.Size);
finally
Reg.Free;
end;
i oczywiście wywala błąd:
Acces violation at address 0041AE76 in module 'Project1.exe' Read of address 615c3166
Po zmianie Buf na :
Buf : array [0..500] of byte;
i usunięciu z kodu punktów 1,2 i 3 wszystko działa. Ale ja nie wiem jak dużego bufora będę potrzebował.
Co robię źle?
Ejjj!
Ja tego potrzebuje.
Przynajmniej napiszcie czy dobrze ustawiam wielkość buforu bo przy po tym mi błąd wywala.
Plizzzzz