Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi INI Dateien lesen und schreiben (https://www.delphipraxis.net/85015-ini-dateien-lesen-und-schreiben.html)

Z32 24. Jan 2007 18:32


INI Dateien lesen und schreiben
 
Hallo zusammen,

ich habe mich ein wenig mit ini-dateien beschäftigt und habe aber noch eine frage.

Undzwar möchte ich mit dieser Prozedure den in editfeld1 eingegebenen namen in die ini-datei schreiben. Das klappt auch, aber ist das programier-technisch richtig?

Delphi-Quellcode:
uses: inifile;

procedure TForm1.Button1Click(Sender: TObject);
var name: string;
var ini: tinifile;
begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'einstellungen.ini');
name:=edit1.Text;
ini.WriteString('Benutzer','Name',name);
ini.Free;
end;

Mit dieser Prozedure möchte ich den namen aus der ini-datei auslesen und in das editfeld2 schreiben. Das klappt ebenfalls auch, aber ist das programmier-technisch richtig und was muss normalerweise an die makierte (<<x>>) stelle. Das was ich dahin geschrieben habe klappt zwar, aber ich weiß nicht warum und das stört mich *grins*

Delphi-Quellcode:
uses: inifile;

procedure TForm1.Button2Click(Sender: TObject);
var ini: tinifile;
begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'einstellungen.ini');
edit2.Text:=ini.ReadString('Benutzer','Name',<<name>>);
ini.Free;
end;
Was ich noch erwähnen möchte ist, dass ich in einem Tutorial auch schonmal diese Prozedure zum laden aus der ini-datei gesehen habe. Aber bei mir hat die nicht funktioniert.

Delphi-Quellcode:
uses: inifile;

procedure TForm1.Button2Click(Sender: TObject);
var ini: tinifile;
begin
ini:=TIniFile.create('namederini.ini');
edit2.Text:=ini.ReadString('Benutzer','Name',name);
ini.Free;
end;
So, das wärs, über antworten würde ich mich sehr freuen :thumb:

Klaus01 24. Jan 2007 18:34

Re: INI Dateien lesen und schreiben
 
Hallo,

Zitat:

edit2.Text:=ini.ReadString('Benutzer','Name',<<nam e>>);
Das was bei Dir in << >> steht, das ist der Defaultwert der zurückgegeben wird
wenn Dein Eintrag in der Ini nicht gefunden wurde.

Grüße
Klaus

Z32 24. Jan 2007 18:38

Re: INI Dateien lesen und schreiben
 
oh, eine sehr schnell antwort.

wenn ich die richtig verstanden habe heißt das, wenn mein wert, also ('Benutzer','Name') nicht gefunden wird, schreibt er "name" in das editfeld? Und ich glaube name gibt ja den formnamen zurück. Jetzt wird mir das klar.

Vielen dank für die antwort

MrKnogge 24. Jan 2007 18:39

Re: INI Dateien lesen und schreiben
 
Und nenn die Variable bitte nicht name !

Klaus01 24. Jan 2007 18:41

Re: INI Dateien lesen und schreiben
 
Vielleicht solltest Du die Variable name auch umbennen, da sie ja schon von Delphi vorbelegt ist.

Ansonsten, hast Du das richtig verstanden.

Grüße
Klaus

gsh 24. Jan 2007 18:43

Re: INI Dateien lesen und schreiben
 
Hi

1. Nenne niemals eine varible "name". Das hat mir früher oft Schwierigkeiten bereitet. Und warum? weil ich öfters den komponenten name dadurch verändert habe.

2. Kannst du es ohne die variable machen:
ini.WriteString('Benutzer','Name',edit1.Text);

3. Solltest du bei inis immer einen try finally block verwenden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ini: tinifile;
begin
  ini := TIniFile.create(ExtractFilePath(ParamStr(0))+'einstellungen.ini');
  try
    ini.WriteString('Benutzer','Name',edit1.Text);
  finally
    ini.Free;
  end;
end;
4. Solltest du dir vllt. eine bessere Code formatierung überlegen ... so ist es nicht gerade übersichtlich

und 5. weil ich es gerade sehe du musst nicht für jede variable ein "var" davor schreiben. Einmal langt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ini: tinifile;
  nocheineVarible : integer;
  undnocheine : String;
begin

Z32 24. Jan 2007 18:49

Re: INI Dateien lesen und schreiben
 
ok, danke für die vielen tipps.

Das mit der variablen name ist ausversehen pssiert, weil ich das beispielprogramm so schnell gemacht habe. Ist mir aber auch erst eben klar geworden.

Jetzt habe ich aber noch eine frage zu try...finally. Was genau macht das. Ich kenne den try...except Block zum fehler abfangen. Funktioniert der try...finally genauso oder gibt es da einen unterschied?

Ich weis das meine Code formatierung schlimm ist, aber ich selbst blicke das so besser durch :wink:

Jürgen Thomas 24. Jan 2007 18:52

Re: INI Dateien lesen und schreiben
 
Hallo,

hast Du in Deiner Version keine Hilfe?

Delphi-Referenz durchsuchenTIniFile.ReadString und Delphi-Referenz durchsuchenTIniFile.WriteString erläutert die Parameter.
Delphi-Referenz durchsuchenDie Anweisung try...except
Delphi-Referenz durchsuchenDie Anweisung try...finally

Gruß Jürgen

gsh 24. Jan 2007 19:12

Re: INI Dateien lesen und schreiben
 
try except = der except code wird bei einem fehler ausgeführt
try finally = der finally code wird AUCH bei einem fehler ausgeführt d.h. es wird immer frei gegeben auch wenn ein fehler auftritt


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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