Home » Tipps & Tricks » Komponenten » Allgemein » Komponenten speichern/laden

Komponenten speichern/laden

Über die Methode WriteComponentRes bzw. ReadComponentRes eines Streams kann man Komponenten (TComponent) bequem in eine Datei speichern und aus einer Datei laden. So lassen sich bequem Eigenschaftswerte wiederherstellen.

procedure ComponentSaveToFile(Component: TComponent; const FileName: String);
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(FileName, fmCreate);
  try
    fs.WriteComponentRes(Component.Name, Component);
  finally
    fs.Free;
  end;
end;

procedure ComponentLoadFromFile(Component: TComponent; const FileName: String);
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
  try
    fs.ReadComponentRes(Component);
  finally
    fs.Free;
  end;
end;

Folgendes Beispiel zeigt, wie man ein Edit-Feld in der Datei C:Test.txt speichert und später wieder lädt. Als erster Parameter muss die Komponente übergeben werden, als zweiten den Dateinamen inkl. Pfad.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ComponentSaveToFile(Edit1,'C:Test.txt');
end; 

procedure TForm1.Button2Click(Sender: TObject);
begin
  ComponentLoadFromFile(Edit1,'C:Test.txt');
end;

Auf diese Weise können alle Komponenten auf dem Formular gesichert werden:

   For t:=0 to ComponentCount-1 do
       ComponentSaveToFile(Components[t],'C:Test'+IntToStr(t+'.txt');

In diesem Beispiel wird für jede Komponente eine extra Datei angelegt.Benutzt man anstatt ComponentCount, ControlCount und statt Components, Controls, werden nur Steuerelemente gespeichert.Durch wiederholten Aufruf von WriteComponentRes können natürlich auch mehrere Komponenten in der gleichen Datei gespeichert werden.