Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi WriteComponentResFile und ReadComponentResFile (https://www.delphipraxis.net/88621-writecomponentresfile-und-readcomponentresfile.html)

Alexander Roth 18. Mär 2007 09:40


WriteComponentResFile und ReadComponentResFile
 
Hi,

also ich habe nach einer guten Möglichkeit gesucht Programmoptionen zu speichern und bin hierauf (weit unten) gestoßen (Siehe Titel).
Nun habe ich eine kleine Test Procedure geschrieben um das auszuprobieren, doch es klappt nicht.
Was mache ich falsch?

Die Klasse:
Delphi-Quellcode:
  TSettings=class(Tcomponent)
  private
    f:string;
    i:Integer;
  end;
Test Procedure
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Settings:=TSettings.Create(self);
  Settings.f:='hallo ich bins';
  Settings.i:=15;

  WriteComponentResFile(extractfilepath(ParamStr(0)) + 'Settings.dat', Settings);

  Settings.Free;// mache ich damit ich sichergehe, dass die Daten nicht noch von dem "alten" Objekt kommen


  Settings:=TSettings.Create(self);

  Settings := TSettings(ReadComponentResFile(extractfilepath(ParamStr(0)) + 'Settings.dat', Settings));
  ShowMessage(settings.f);  // hier bingt er ''
  ShowMessage(inttostr(Settings.i));  // hier bringt er 0

  Settings.Free;
end;
Gruß Alexander

DGL-luke 18. Mär 2007 09:51

Re: WriteComponentResFile und ReadComponentResFile
 
Hallo,

das müssen afaik published properties sein.

Alexander Roth 18. Mär 2007 10:00

Re: WriteComponentResFile und ReadComponentResFile
 
Jo, danke klappt:

Der funktionierende Code:
Delphi-Quellcode:
  TSettings=class(Tcomponent)
  private
    fs:string;
    fi:Integer;
  published
    property s:string read fs write fs;
    property i:integer read fi write fi;
  public
    procedure SaveConfig;
    procedure ReadConfig;
  end;

var
  Form1: TForm1;

  Settings:TSettings;

implementation

{$R *.dfm}



procedure TSettings.SaveConfig;
begin
  WriteComponentResFile(extractfilepath(ParamStr(0)) + 'Settings.dat',Self);
end;

procedure TSettings.ReadConfig;
begin
  if fileexists(extractfilepath(ParamStr(0)) + 'Settings.dat') then
    try
      Self := TSettings(ReadComponentResFile(extractfilepath(ParamStr(0)) + 'Settings.dat', Self));
    except
    end
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Settings:=TSettings.Create(self);
  Settings.s:='hallo ich bins';
  Settings.i:=15;

  Settings.SaveConfig;

  Settings.Free;


  Settings:=TSettings.Create(self);

  Settings.ReadConfig;
 
  ShowMessage(settings.s);
  ShowMessage(inttostr(Settings.i));

  Settings.Free;


  close;
end;
Tschüss :hi:

Alexander


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz