PDA

View Full Version : مشکل با Registry و BUFFER و STREAM



mortezakiaee
چهارشنبه 06 شهریور 1387, 13:31 عصر
من ستون های DBGRID رو به روش زیر ذخیره می کنم


var stream:TMemoryStream ;reg:tregistry;

begin
try
stream:=TMemoryStream .Create;

DBGrid1.Columns.SaveToStream(stream);

REG:=TRegistry.Create;
REG.RootKey:=HKEY_CURRENT_USER;
IF REG.OpenKey('SOFTWARE\MYPROG\LOGON\USERSSETUP',TRU E)THEN BEGIN

REG.WriteBinaryData('NAME',stream ,stream.Size );
REG.CloseKey;END;

finally
stream.Free;
reg.Free;
end;


تا اینجا مشکلی نیست. ذخیره میشه و کلید باینری ایجاد میشه.


حالا برای خوندن از این کد استفاده کردم


var stream:TMemoryStream ;reg:TRegistry ;
SIZE:Integer;BUF:Pointer;
begin
try
stream:=TMemoryStream .Create;



REG:=TRegistry.Create;
REG.RootKey:=HKEY_CURRENT_USER;
IF REG.OpenKey('SOFTWARE\KHAVARAN\LOGON\USERSSETUP',T RUE)THEN BEGIN
SIZE:=reg.GetDataSize('NAME');
BUF:=GetMemory(SIZE);
REG.ReadBinaryData('NAME',STREAM ,SIZE);
REG.CloseKey;END;

stream.WriteBuffer(BUF^,SIZE);
BUF
DBGrid1.Columns.LoadFromStream(stream);
finally
FreeMemory(BUF);
stream.Free;
reg.Free;
END;



خطای STREAM READ ERROR می ده. مشکل چی میتونه باشه؟

mortezakiaee
پنج شنبه 07 شهریور 1387, 12:39 عصر
کسی نظری نداره؟