Entwickler-Ecke

Delphi Tutorials - Benutzung von INI-Files (INI-Dateien)


Chatfix - So 23.06.02 02:11
Titel: Benutzung von INI-Files (INI-Dateien)
So den Tutorial gibts jetzt nur noch in PDF:

Die aktuellste Version findet ihr hier: http://www.kuknet.de/tutorial1.pdf



Über Feedback würde ich mich weiterhin freuen.


MathiasH - Sa 13.07.02 20:45

Mit drei Delphi-Büchern hab' ich das nicht kapiert, mit deinem Tutourial schon, desshalb:

klasse arbeit

MathiasH


Pit - Sa 13.07.02 21:08
Titel: Re: Benutzung von INI-Files (INI-Dateien)


Chatfix - Sa 13.07.02 21:36

MathiasH hat folgendes geschrieben:
Mit drei Delphi-Büchern hab' ich das nicht kapiert, mit deinem Tutourial schon, desshalb:

klasse arbeit

MathiasH


danke


Moritz M. - Di 13.08.02 17:29
Titel: Hi
Bin totaler Delphi-Anfänger und habe das Tutorial schon kapiert!

:!: :!: :!: SEHR GUT :!: :!: :!:

Du solltest noch mehrere Tutorials schrieben

CU

Mo


Chatfix - Fr 16.08.02 08:49
Titel: Re: Hi
Onz hat folgendes geschrieben:
Bin totaler Delphi-Anfänger und habe das Tutorial schon kapiert!

:!: :!: :!: SEHR GUT :!: :!: :!:

Du solltest noch mehrere Tutorials schrieben

CU

Mo


auch dir danke für das lob


Delete - Do 12.09.02 07:36

Aber die Kritik von Pit ist nicht angekommen oder? :roll:


deagle - Mo 16.09.02 22:58


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
try 
  ini:=TIniFile.Create('c:\meineini.ini'); 
     // INI erstellen und falls vorhanden initialisieren 
  ini.WriteString('Sektion1','Eigenschaft1','Dein String'); 
     // String in Sektion1 unter Eigenschaft1 abspeichern 
  ini.WriteInteger('Sektion2','Eigenschaft2',1234); 
     // Intergerwert (1234) in Sektion2 unter eigenschaft2 abspeichern 
finally 
  ini.Free; 
     // Variable ini wieder freigeben

mal ne frage muss man bei String einfach Form1.Color := clgreen

eintragen!?


Chatfix - So 22.09.02 14:35

ich wiess jetzt nicht geneau was du meinst..

ich denk mal du willst die farbe speichern:


Quelltext
1:
ini.writeinteger('Sektion','Eigenschaft',form1.color);                    


lesen:


Quelltext
1:
form1.color:=ini.readinteger('Sektion','Eigenschaft',STANDARDFARBE);                    



Farben werden glaub ich integer geschrieben und gelsen, ncht String!
ich hoffe ich konnte helfen


zwoi - Fr 04.10.02 00:09
Titel: Super!!!
Dieser Tutorial ist echt gut. Hab auch schon in Büchern gelesen wie man eine ini datei erstellt und ausliest.
Ich versteh nicht wieso man die Sachen in so Büchern nicht auch so einfach und anschaulich erklärt!

Auf jeden Fall ist das SUPER, was du da veröffentlicht hast :!: :!: :!:


DeCodeGuru - Fr 04.10.02 11:13

Hi Leutz,

das Tutorial scheint ja gut zu sein und bei den Usern beliebt zu sein. Jedoch denke ich schon, dass man die Kritik von Pit ruhig einbauen sollte, denn er hat recht mit dem was er schreibt :wink:


Chatfix - Fr 04.10.02 15:43

hmm also praktisch vor des try einfach ini := nil; hinschreiben?


DeCodeGuru - Fr 04.10.02 15:49

so, wie es Pit halt geschrieben hat :wink:

entweder so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create(...);
  try
    ...
  finally
    Ini.Free;
  end;
end;


oder so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  Ini: TIniFile;
begin
  Ini := nil;
  try
    Ini := TIniFile.Create(...);
    ...
  finally
    Ini.Free;
  end;
end;


Ich würde allerdings die erste Methode nehmen.


Chatfix - Fr 04.10.02 15:56

ok habs geändert.... ich hoffe jetzt ist es richtig :roll:

Hab das Tut ebenfalls noch ien bischen erweitert, und Fehler ausgebessert.


b3nton - Sa 14.12.02 15:57

nun ja wie soll ich sagen ... ich hab da n prob mit der ausgabe.... kann einfach nichts ausgeben... könnte mir jemand vielleicht n beispiel fürn editfeld und ne listbox geben .. das wäre echt super....

thx schon mal und das tutorial ist ansonsten zeimlich goil...

thx b3nton


Chatfix - Di 17.12.02 07:49

also ich weiss nich ganz was du meinst aber vllt ist es ja das:


Quelltext
1:
2:
3:
Edit1.Text:=ini.ReadString('bla', 'bla', 'bla');

Listbox: ListBox1.Items.Add(ini.ReadString('bla', 'bla', 'bla'));


b3nton - Do 19.12.02 14:36

jo cool genau das hatte nicht gefunzt.. thx ..


©menschenskind - So 02.02.03 15:19

wie kann man bestimmte eigenschaften auslesen.
die werte liest man mit ini.readstring('sektion','eigenschaft','');aus... nur möchte ich jetzt eigenschaften lesen[/b]


Tino - Mo 03.02.03 13:15

@menschenskind: Bitte stelle Deine Frage in der dafür vorgesehende Sparte. Danke!

Gruß
TINO


ShiKai - Mo 05.05.03 14:45

wieso sollte man die ini for dem try-finally-end
zuweisen?

ist das auch nötig, wenn ich das so mache?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  IniFile : TIniFile;
begin
  try
    IniFile := TIniFile.Create(DateiName);

    ...;
    ...;    
  finally
    FreeAndNil(IniFile);
  end;
end;


Chatfix - Di 06.05.03 15:55

ja schon weil das programm sonst nen fehler bringt wenn bei der erstelliung der daten fehler aufkommen


del1312 - Mo 02.06.03 12:01

Hm ... bekomme immer die Fehlermeldung:
"Undefinierter Bezeichner: 'TIniFile'"

Hab das hier zu stehen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var
  IniFile : TIniFile;
begin
   IniFile := TIniFile.Create('c:\Test.ini')

end;


Wenn ich das richtig seh sollte bei Klick auf den Button eine IniDatei erstellt werden oder?


Delete - Mo 02.06.03 12:09

Wer lesen kann ist klar im Vorteil. :roll:

Zitat:

1. Erste Schritte

Als erstes erweitern wir die Uses-Liste:

Delphi-Quelltext
1:
2:
Code: 
  Uses {...}, inifiles;



del1312 - Mo 02.06.03 13:39

Oh sorry wo hab ich wieder meine Augen :oops: Hab mal nen kleines Prog gebastelt, welches den Wert einer CheckBox in einer INI speichert. Das schreiben klappt supi nun wollte ich es wieder auslesen und dann kommt ne Fehlermeldung.
Hier der Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  ini:Tinifile;
  schreiben,lesen:integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
If CheckBox1.Checked = true  then schreiben := 1 ;
If CheckBox1.Checked = false then schreiben := 0 ;

ini := TIniFile.Create('c:\test.ini');
     // INI erstellen und falls vorhanden initialisieren
try
ini.WriteInteger('Autosave','Eigenschaft',schreiben);
     // Intergerwert (1234) in Sektion2 unter Eigenschaft2 abspeichern
finally
  ini.Free;
     // Variable ini wieder freigeben
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ini := TIniFile.Create('c:\test.ini');
try
lesen := ini.ReadInteger('Autosave','Eigenschaft',);

If lesen: = 1 then CheckBox1.Checked = true ;
If lesen:=0 then CheckBox1.Checked = false;
finally
  ini.Free;

end;
end;

end.


Chatfix - Mo 02.06.03 13:44

hier liegt dein fehler:


Delphi-Quelltext
1:
2:
If lesen: = 1 then CheckBox1.Checked = true ; 
If lesen:=0 then CheckBox1.Checked = false;


so müsste es aussehen


Delphi-Quelltext
1:
2:
If lesen= 1 then CheckBox1.Checked := true ; 
If lesen=0 then CheckBox1.Checked := false;


und hier:

Delphi-Quelltext
1:
lesen := ini.ReadInteger('Autosave','Eigenschaft',);                    


du hast hinten vergessen einen standarwert festzulegen (entweder 0 oder 1) wenn kein wert in der ini stehen sollte


Tweafis - Mo 02.06.03 13:45

Ich frage mich wie dieser code funktionieren soll...

Ich empfehle dir ReadBool bzw WriteBool zu benutzen

Zitat:
procedure TForm1.Button2Click(Sender: TObject);
begin
ini := TIniFile.Create('c:\test.ini');
try
lesen := ini.ReadInteger('Autosave','Eigenschaft',0); // default wert: 9

If lesen = 1 then CheckBox1.Checked := true
else CheckBox1.Checked := false;
finally
ini.Free;

end;


// Arg zu langsam ^^


Tino - Mo 02.06.03 14:01

oder so:

Delphi-Quelltext
1:
CheckBox1.Checked := ini.ReadInteger ('Autosave''Eigenschaft',0) = 1;                    

oder so:

Delphi-Quelltext
1:
CheckBox1.Checked := ini.ReadBool ('Autosave''Eigenschaft', True);                    

Gruß
Tino


del1312 - Mo 02.06.03 14:17

Hm danke aber ich hab jetzt den Fehler gefunden. Es hat die 0 hinter:


Quelltext
1:
lesen:= ini.ReadInteger('Autosave','Eigenschaft',0);                    


gefehlt, jetzt funzt es. Danke nochmal!

mfg
ecspooky


Tweafis - Mo 02.06.03 15:06

Das haben wir dir schon die ganze Zeit versucht zu sagen :mrgreen:


Chatfix - Mo 24.11.03 12:58

Echt mal *gg*
So schwer ist es nun wirklich nicht...
Wenn mans einmal hinbekommen hat dann ists easy...


masterchris_99 - Do 01.04.04 21:40

Leute ich habe mal eine Frage

Also ich habe jetzt eine ini erstellen lassen die so aussieht:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
[Setup]
Counter=4
[Handel1]
Omni=11111
Droiden1=Nomic
Droiden_Anzahl1=30
Ressourcen1=Titan
Ressourcen_Menge1=16500
Droiden2=Zengal
Droiden_Anzahl2=5
Ressourcen2=Sel
Ressourcen_Menge2=15
[Handel2]
Omni=22222
Droiden1=Solaron
Droiden_Anzahl1=5
Ressourcen1=Sel
Ressourcen_Menge1=50
[Handel3]
Omni=33333
Droiden1=Trior
Droiden_Anzahl1=30
Ressourcen1=Titan
Ressourcen_Menge1=10000
Ressourcen2=Öl
Ressourcen_Menge2=5000


Nun Soll er es alles ausgeben und das nach den Handelsnummern.
Also so:


Delphi-Quelltext
1:
2:
                    Omni          Droiden          Ressourcen
Nr.


Beispiel:

Delphi-Quelltext
1:
2:
3:
                    Omni          Droiden          Ressourcen
Nr. 1             11111        30 Nomic         16500 Titan
                                5 Zengal         15 Sel

Das wäre Beispiel für Handel 1


Horschdware - Do 01.04.04 22:13


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
var ini : TInifile;
    sOmni, sDroiden1, sDroiden_Anzahl1, sRessourcen1, sRessourcen_Menge1, sDroiden2, sDroiden_Anzahl2, sRessourcen2, sRessourcen_Menge2 : string;
i, imax : integer;
allehandels : TStringlist;
begin
  try
    ini:=TInifile.create('C:\meine_ini.ini');
    allehandels:=TStringlist.create;
    ini.readsections(allehandels);
    imax:=allehandels.count;
    memo1.lines.add('                  Omni             Droiden      Resourcen');
    for i:=1 to imax do    //i:=1 da i:=0 'Setup' wäre...
    begin
      sOmni:=ini.readstring(allehandels[i],'Omni','');
      sDroiden1:=ini.readstring(allehandels[i],Droiden1,'');
      sDroiden_Anzahl1:=ini.readstring(allehandels[i],Droiden_Anzahl1,'');
      ...
      memo1.lines.add('Nr.'+IntToStr(i)+'     '+sOmni+'        '+sDroiden_Anzahl1+'  '+Droiden1+.....
      memo1.lines.add('                                          '+sDroiden_Anzahl2+'   '+Droiden2+....
    end;
  finally
    ini.free;
    allehandels.free
  end;
...
end;

//absichtlich etwas ausführlicher


umpani - Fr 02.04.04 10:59

Nur mal ne grundsätzliche Frage,

wie sinvoll ist es ein Tutorial hier im Forum nur als PDF einzustellen?

Problematisch dabei sind zwei sachen.

1. Was ist, wenn du mal keine Webseite mehr hast? Kann ja mal sein.
2. Die Suchfunktion des Forums wird ausgehebelt und kann nicht in deinem Tutorial funktionieren.

Wäre es also möglich, dein Tutorial neben der PDF Variante auch als "Volltextversion" (als Beitrag) einzustellen?

Gruß Umpani


Chatfix - Fr 02.04.04 18:07

also
1. die website bleibt, sollte sich der link ändern wird der thread aktualisiert.
2. sobald ich zeit finde werde ich sie extra für dich auch nochmal als "volltext"-version reinstellen...
das war auch mal so, nur ich habe keine lust wenn man mal was verbessert ergänzt 50 sachen zu aktualisieren...
3. Der Tutorial ist ja nicht nur hier ;)
4. gibts net...

@ Mods, könntet ihr mal de postings löschen die nicht mit der "kritik" des tutorials zu tun hat...
oder schriebt sie in einen extra thread bitte...


Lhid - Mi 08.09.04 22:07

Meinung und mich grundlegend geändert-> alte beiträge gelöscht


Chatfix - Do 09.09.04 07:38

Wie "neuer Link"? - Sorry verstehe nur Bahnhof....