Hallo,<br>
ich will meine DBGrid Informationen in der Registry Abspeichern und Lesen, nur leider funktioniert das ncht so wie ich es gern hätte. Vielleicht könnt ihr mir weiter helfen.
<Pre>
// Zum speichern der Informationen aus dem Grid
procedure TtfTest.SpeedButton1Click(Sender: TObject);
Const sKeyPath = 'Software\QQQQQ\Test\';
sTestGrid = 'Grid';
sFilePath1 = 'e:\XXXX\YYYYY\ori.dat';
sFilePath2 = 'e:\XXXX\YYYYY\cop.dat';
var stream: TMemoryStream;
begin
stream:=TMemoryStream.Create();
DBGrid1.Columns.SaveToStream(stream);
DBGrid1.Columns.SaveToFile(sFilePath1);
stream.SaveToFile(sFilePath2); ;
with TRegistry.Create do
begin
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sKeyPath,true)then
begin
if stream.Memory<>Nil then Beep;
WriteBinaryData(sTestGrid,stream,stream.Size);
end;
finally
Free;
stream.Free;
end;
end;
end;
<br><br>
Diese Procedure funktioniert eigentlich, nur wenn ich dann die Datei Hex mit dem Registry eintrag vergleiche, ist sie nicht identisch ((
<br><br>
procedure TtfTest.Button1Click(Sender: TObject);
Const sKeyPath = 'Software\QQQQQ\Test\';
sTestGrid = 'Grid';
sFilePath1 = 'e:\XXXX\YYYYY\ori.dat';
sFilePath2 = 'e:\XXXX\YYYYY\cop.dat';
var stream: TMemoryStream ;
begin
//DBGrid1.Columns.LoadFromFile(sFilePath);
stream:=TMemoryStream.Create;
with TRegistry.Create do
begin
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sKeyPath,false)then
begin
// Fehlerquelle
try
ReadBinaryData(sTestGrid,stream,GetDataSize(sTestG rid));
if stream.Memory<>Nil then Beep; // Hier ist leider mein
// Stream immer Nil und es kommt eine "accesviolation"
DBGrid1.Columns.LoadFromStream(stream);
except end;
end;
finally
Free;
stream.Free;
end;
end;
end;
</pre>
ich will meine DBGrid Informationen in der Registry Abspeichern und Lesen, nur leider funktioniert das ncht so wie ich es gern hätte. Vielleicht könnt ihr mir weiter helfen.
<Pre>
// Zum speichern der Informationen aus dem Grid
procedure TtfTest.SpeedButton1Click(Sender: TObject);
Const sKeyPath = 'Software\QQQQQ\Test\';
sTestGrid = 'Grid';
sFilePath1 = 'e:\XXXX\YYYYY\ori.dat';
sFilePath2 = 'e:\XXXX\YYYYY\cop.dat';
var stream: TMemoryStream;
begin
stream:=TMemoryStream.Create();
DBGrid1.Columns.SaveToStream(stream);
DBGrid1.Columns.SaveToFile(sFilePath1);
stream.SaveToFile(sFilePath2); ;
with TRegistry.Create do
begin
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sKeyPath,true)then
begin
if stream.Memory<>Nil then Beep;
WriteBinaryData(sTestGrid,stream,stream.Size);
end;
finally
Free;
stream.Free;
end;
end;
end;
<br><br>
Diese Procedure funktioniert eigentlich, nur wenn ich dann die Datei Hex mit dem Registry eintrag vergleiche, ist sie nicht identisch ((
<br><br>
procedure TtfTest.Button1Click(Sender: TObject);
Const sKeyPath = 'Software\QQQQQ\Test\';
sTestGrid = 'Grid';
sFilePath1 = 'e:\XXXX\YYYYY\ori.dat';
sFilePath2 = 'e:\XXXX\YYYYY\cop.dat';
var stream: TMemoryStream ;
begin
//DBGrid1.Columns.LoadFromFile(sFilePath);
stream:=TMemoryStream.Create;
with TRegistry.Create do
begin
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sKeyPath,false)then
begin
// Fehlerquelle
try
ReadBinaryData(sTestGrid,stream,GetDataSize(sTestG rid));
if stream.Memory<>Nil then Beep; // Hier ist leider mein
// Stream immer Nil und es kommt eine "accesviolation"
DBGrid1.Columns.LoadFromStream(stream);
except end;
end;
finally
Free;
stream.Free;
end;
end;
end;
</pre>
Comment