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
Inhalt:
- Aufbau von INI-Dateien
- Erste Schritte
- In INI-Datei schreiben
- Aus INI-Datei lesen
- Überprüfen ob eine Sektion/Eigenschaft existiert
- Werte aus INI-Datei löschen
Ü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 public 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'); try ini.WriteInteger('Autosave','Eigenschaft',schreiben); finally ini.Free; 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 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;
|
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....
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!