Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String dauerhaft speichern (https://www.delphipraxis.net/70123-string-dauerhaft-speichern.html)

Fritz01 25. Mai 2006 14:09


String dauerhaft speichern
 
Hallo Leute,

wie ist es möglich einen String dauerhaft zu speichern, damit man diesen String nicht bei jedem Programmstart erneut eingeben muß.
Fritz

faux 25. Mai 2006 14:14

Re: String dauerhaft speichern
 
Hallo!

Das kannst du mit INI-Files lösen. Dazu gibts eine Klasse namens Delphi-Referenz durchsuchenTIniFile in der Unit IniFiles.
Alternativ kannst du auch die Registry benutzen. Dazu nimm am besten die Delphi-Referenz durchsuchenTRegistry Klasse.

Links:
http://www.dsdt.info/tipps/?id=104
http://www.dsdt.info/tipps/?id=152

Grüße
Faux

marabu 25. Mai 2006 14:17

Re: String dauerhaft speichern
 
Hallo.

Ein Vorteil von TIniFile ist, dass jeder Schreibzugriff sofort zur Persistenz führt. Einer von vielen Nachteilen ist, dass jeder Lesezugriff zu einem Lesen von der Platte führt. Eine Alternative ist TMemIniFile.

Delphi-Quellcode:
unit DemoFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles;

type
  TDemoForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    mif: TMemIniFile;
    DerString: String;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

procedure TDemoForm.FormCreate(Sender: TObject);
var
  fn: TFileName;
begin
  fn := ChangeFileExt(ParamStr(0), '.ini');
  mif := TMemIniFile.Create(fn);
  DerString := mif.ReadString('Einstellungen', 'DerString', '');
end;

procedure TDemoForm.FormDestroy(Sender: TObject);
begin
  with mif do
  begin
    UpdateFile;
    Free;
  end;
end;

end.
Grüße vom marabu

Fritz01 25. Mai 2006 17:30

Re: String dauerhaft speichern
 
Hi Marabu,
danke für die schnelle Antwort.
Habe ein EditFeld in diesem soll beim 1.Programmstart ein Text (Passwort) eingegeben und ausgewertet werden. Die Eingabe soll bei weitern Programmstart nicht mehr erforderlich sein, wohl aber die Auswertung.
Nun meine Frage: Wo und wie bringe ich in Deinem Beispiel meinen String (EditFeld.Text) ein?
Fritz

marabu 25. Mai 2006 17:36

Re: String dauerhaft speichern
 
Hallo Fritz,

das geht so:

Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
var
  fn: TFileName;
begin
  fn := ChangeFileExt(ParamStr(0), '.ini');
  mif := TMemIniFile.Create(fn);
  EditFeld.Text := mif.ReadString('Einstellungen', 'EditFeld', '');
end;

procedure TDemoForm.FormDestroy(Sender: TObject);
begin
  with mif do
  begin
    mif.WriteString('Einstellungen', 'EditFeld', EditFeld.Text);
    UpdateFile;
    Free;
  end;
end;
Beachte bitte, dass ich WriteString() noch eingefügt habe.

marabu

Fritz01 26. Mai 2006 11:56

Re: String dauerhaft speichern
 
Hallo Faux und Marabu,
habt mir beide bei meinem Problem sehr geholfen, danke für die schnellen Antworten. Es funktioniert!!
Fritz

HuxXx 26. Mai 2006 12:30

Re: String dauerhaft speichern
 
Zitat:

Zitat von faux
Hallo!

Das kannst du mit INI-Files lösen. Dazu gibts eine Klasse namens Delphi-Referenz durchsuchenTIniFile in der Unit IniFiles.
Alternativ kannst du auch die Registry benutzen. Dazu nimm am besten die Delphi-Referenz durchsuchenTRegistry Klasse.

Wenns wirklich nur EIN String ist dann wäre TSTringlist besser, damit spart man sich auch die Unit für IniFiles oder Registry... (damit wird das prog net so gross)
Beispiel:

Delphi-Quellcode:
var hallo:TStringList;
begin
hallo:=TStringlist.Create;
hallo.Add('Der String...');
hallo.SaveToFile('C:\Dein_String.txt');
...
...
Laden:
Delphi-Quellcode:
var hehe:TStringList;
begin
hehe:=TStringlist.Create;
hehe.LoadFromFile('C:\Dein_String');
Edit1.Text:=hehe[1];
...
...
Greetz by Hux :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 Uhr.

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