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 می ده. مشکل چی میتونه باشه؟
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 می ده. مشکل چی میتونه باشه؟