Thema: Delphi TFileStream verwenden

Einzelnen Beitrag anzeigen

Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#4

Re: TFileStream verwenden

  Alt 8. Mär 2009, 15:28
So wie es aussieht ist das Problem für TFrames nicht zu lösen (Es existiert keine Funktion CreateNew für TFrames).
Allerdings habe ich (im Internet an andere Stelle) eine Lösung des Problems für TForm gefunden.

Für den den es interessiert:
Ein normales Formular, das beim Erzeugen die Eigenschaftswerte der Komponenten jedoch von Datei liest, sofern das Formular zuvor schon einmal abgespeichert wurde.
Der Vorteil liegt darin, daß wenn das Formular um weitere Objekte ergänzt wird alles automatisch gespeichert wird.
Gut geeignet als Ersatz für ini-Dateien da weniger Schreibarbeit, von der geringeren Fehleranfälligkeit ganz zu schweigen.

Delphi-Quellcode:
unit AutoSpeichern;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TAutoSpeichernForm = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Edit2: TEdit;
  private
  public
    constructor Create(AOwner: TComponent); override;
    procedure BeforeDestruction; override;
  end;

var
  AutoSpeichernForm: TAutoSpeichernForm;

implementation

{$R *.DFM}

constructor TAutoSpeichernForm.Create(AOwner: TComponent);
var
  datei: string;
begin
  datei:= ExtractFilePath(Application.ExeName) + ClassName + '.fs';
  if FileExists(datei) then
  begin
    CreateNew(AOwner, 0);
    with TFileStream.Create(datei, fmOpenRead or fmShareDenyWrite) do
    try
      ReadComponent(Self);
    finally
      Free;
    end;
  end
  else
    inherited Create(AOwner);
end;

procedure TAutoSpeichernForm.BeforeDestruction;
var
  datei: string;
begin
  inherited;
  datei:= ExtractFilePath(Application.ExeName) + ClassName + '.fs';
  with TFileStream.Create(datei, fmCreate) do
  try
    WriteComponent(Self);
  finally
    Free;
  end;
end;

end.
Bernhard
  Mit Zitat antworten Zitat