Entwickler-Ecke
Dateizugriff - TInifile und readstring
Bise - Di 23.07.02 23:49
Titel: TInifile und readstring
Hi an alle die noch nicht schlafen :wink:
nachdem ich nun den ganzen Abend die F1-Taste gedrückt, IniFile-Tutorials gelesen und in verschiedenen Foren gesucht habe hoffe ich hier auf eine Antwort.
Also, mir wurde die Bitte herangetragen, ein kleines Programm zu schreiben. Dieses Programm soll bei etlichen Firmen installiert werden (nur zur Info: ich mache das justforfun ... ) und lediglich dem Installateur und nicht dem Anwender dienen.
Dabei geht es darum, aus einer INI-Datei den Schluessel und den Wert getrennt auszulesen.
Nun weiss ich nicht, wie man das macht. Bei den ganzen IniFile.Readstring-Beispielen wurde immer ein hartcodierter string mitübergeben (wenn die z. B. den Wert auslesen sollte, das Auslesen des Schluessels habe ich nirgendwo gefunden :( ).
Kann man denn eine Ini-Datei nicht wie einen Textfile auslesen und dann mit Copy und Pos die einzelnen Einträge für Schluessel und Wert auslesen :?: Und wenn ja, wie geht denn das?
Für's lesen und evt. Hilfe bin ich euch dankbar
Mfg
Bise
hitstec - Mi 24.07.02 00:55
Also nehmen wir an, eine Inifile sieht so aus:
Quelltext
1: 2: 3:
| [Sektion] Schlüssel1=Wert1 Schlüssel2=Wert2 |
Dann kannst du "Schlüssel1=Wert1" und "Schlüssel2=Wert2" als Strings in TStrings oder eine TSringList mit der Funktion:
Quelltext
1:
| procedure ReadSectionValues(const Section: string; Strings: TStrings); |
einlesen.
Konkret geht das so: (Auszug aus der Delphi-Hilfe)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| uses IniFiles;
procedure TForm1.FormActivate(Sender: TObject); var AppIni: TIniFile; begin AppIni := TIniFile.Create('WIN.INI'); AppIni.ReadSectionValues('Ports',ListBox1.Items); AppIni.Free; end; |
Nun hast du eine "Sammlung" von Strings, die jeweils durch ein "="-Zeichen getrennt sind. Links davon ist der Schlüssel, rechts davon der Wert.
Mit der Funktion
Copy kannst du jeweils den gewünschten Teilstring, den du mit der Funktion
Pos ermittelst, herausfinden.
So.
wwerner - Mi 24.07.02 06:42
Schau dir mal readsection und readsections an
Bise - Mi 24.07.02 09:20
Super,
ich danke euch beiden.
Wahrscheinlich hab ich gestern abend schon selber fast geschlafen.
Vielen Dank.
Bise
Moritz M. - Mi 14.08.02 10:59
Wenn du das meinst was Ich denke habe ich noch eine Möglichkeit:(Das Tutorials aus diesem Forum)
1. Erste Schritte
Als erstes erweitern wir die Uses-Liste:
Danach benötigen wir eine weitere Variable vom Typ Tinifile:
Quelltext
1: 2:
| Var {...} ini:Tinifile; |
2. Aufbau von INI-Dateien
Um mit INI-Dateien zu arbeiten muss man wissen wie solche aufgebaut sind. INI-Dateien bestehen aus verschieden Sektionen die verschiedene Eigenschaften enthalten können. Hier ein Beispiel:
[Programm]
lastopen=20.05.2002
version=1.0
[Einstellungen]
fenster=maximiert
[User]
username=Max Mustermann
INI-Dateien können beliebig viele Sektionen und Eigenschaften besitzen.
Die Eigenschaft bekommt Ihren Wert über das = zugewiesen. Der Wert kann auch Leerzeichen enthalten.
Die Namen der Sektionen werden in [] eingeschlossen.
Man kann INI-Dateien selber einfach im Editor anlegen bzw. bearbeiten.
3. In INI-Datei schreiben
Mit folgenden Anweisungen kann man Daten in eine INI-Datei schreiben:
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 |
Die Befehle WriteString und / oder WriteInteger sooft hinschreiben bis man alle Daten gespeichert hat die man möchte.
4. Aus INI-Datei lesen
Mit folgenden Anweisungen kann man Daten aus einer INI-Datei auslesen. Man benötigt hier allerdings Variablen, um die ausgelesen Werte zu speichern.
In diesem Beispiel var1:string; und var2:integer;
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| try ini:=TIniFile.Create('c:\meineini.ini'); // INI–Datei initialisieren var1:=ini.ReadString('Sektion1','Eigenschaft1',''); // Daten aus Sektion1 unter Eigenschaft1 auslesen // Der letzte Wert ist ein Standartwert wenn nicht gelesen werden kann var2:=ini.ReadInteger('Sektion1','Eigenschaft1',); // Daten aus Sektion1 unter Eigenschaft1 auslesen // Der letzte Wert ist ein Standartwert wenn nicht gelesen werden kann finally ini.Free; // Variable ini wieder freigeben |
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!