Announcement

Collapse
No announcement yet.

Abspeichern von DBGridinformationen in der Registry

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abspeichern von DBGridinformationen in der Registry

    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>

  • #2
    hi Sascha

    Du must Deinen Code etwas ändern :

    if stream.Memory<>Nil then Beep;
    WriteBinaryData(sTestGrid,stream.memory^,stream.Si ze);
    end;

    stream.size(GetDataSize(sTestGrid));
    // deshalb ist dein stream immer nil !!
    ReadBinaryData(sTestGrid,stream.memory^,GetDataSiz e(sTestGrid));
    if stream.Memory<>Nil then Beep; // Hier ist leider mein
    // Stream immer Nil und es kommt eine "accesviolation"
    DBGrid1.Columns.LoadFromStream(stream);
    except end;
    mfg

    Haral

    Comment

    Working...
    X