Announcement

Collapse
No announcement yet.

SaveToStream / SaveToFile

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

  • SaveToStream / SaveToFile

    Hallo, kann mir jemand sagen wie man die o.a. Proceduren in einer Komponente implementiert. Ich möchte gern alle Einstellungen die im Objektinspector (oder direkt zugewiesen) vorhanden sind in einen Stream oder in einem File speichern, so wie es viele Komponenten bieten. Natürlich will ich die Daten dann auch wieder mit Loadfrom ... einlesen. Kennt jemand ein Beipsiel?

  • #2
    Hallo,

    das folgende Beispiel demonstriert das Prinzip. Ein Formular (self) ist in der Lage, mit einem <b>WriteComponent</b>-Aufruf den Zustand aller eingebetteten Client-Controls in eine Datei zu schreiben, so das beim nächsten Programmstart der Inhalt alle Controls wieder aus dieser Datei eingelesen werden kann.
    <pre>
    <b>unit</b> ReadComponentFrm;
    <br>
    <b>interface</b>
    <br>
    <b>uses</b>
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;
    <br>
    <b>type</b>
    TForm1 = <b>class</b>(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    ButtonClose: TButton;
    <b>procedure</b> ButtonCloseClick(Sender: TObject);
    <b>procedure</b> FormCloseQuery(Sender: TObject; <b>var</b> CanClose: Boolean);
    <b>private</b>
    <font color="#003399"><i>{ Private-Deklarationen }</i></font>
    FFilename : <b>String</b>;
    <b>public</b>
    <font color="#003399"><i>{ Public-Deklarationen }</i></font>
    <b>constructor</b> Create(aOwner: TComponent); <b>override</b>;
    <b>end</b>;
    <br>
    <b>var</b>
    Form1: TForm1;
    <br>
    <b>implementation</b>
    <br>
    <font color="#003399"><i>{$R *.DFM}</i></font>
    <br>
    <b>constructor</b> TForm1.Create(aOwner: TComponent);
    <b>var</b>
    fs: TFileStream;
    <b>begin</b>
    FFilename := ExtractFilePath(ParamStr(0)) + Classname + <font color="#9933CC">'.DAT'</font>;
    <b>if</b> FileExists(FFilename) <b>then</b>
    <b>begin</b>
    CreateNew(aOwner);
    fs:= TFileStream.Create(FFilename, fmOpenread <b>or</b> fmShareDenyWrite);
    <b>try</b>
    fs.ReadComponent(self);
    <b>finally</b>
    fs.free;
    <b>end</b>;
    <b>end</b>
    <b>else</b>
    <b>inherited</b> Create(aOwner);
    <b>end</b>;
    <br>
    <b>procedure</b> TForm1.ButtonCloseClick(Sender: TObject);
    <b>begin</b>
    Close;
    <b>end</b>;
    <br>
    <b>procedure</b> TForm1.FormCloseQuery(Sender: TObject; <b>var</b> CanClose: Boolean);
    <b>var</b>
    fs: TFilestream;
    <b>begin</b>
    fs:= TFilestream.Create(FFilename, fmCreate);
    <b>try</b>
    fs.WriteComponent(self);
    <b>finally</b>
    fs.free;
    <b>end</b>;
    <b>end</b>;
    <br>
    <b>end</b>.
    </pre&gt

    Comment

    Working...
    X