Autor Beitrag
Bise
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 23.07.02 23:49 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 295



BeitragVerfasst: Mi 24.07.02 00:55 
Also nehmen wir an, eine Inifile sieht so aus:

ausblenden 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:

ausblenden Quelltext
1:
procedure ReadSectionValues(const Section: string; Strings: TStrings);					

einlesen.

Konkret geht das so: (Auszug aus der Delphi-Hilfe)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mi 24.07.02 06:42 
Schau dir mal readsection und readsections an

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Bise Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: 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:

ausblenden Quelltext
1:
Uses {...}, inifiles;					


Danach benötigen wir eine weitere Variable vom Typ Tinifile:

ausblenden 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:

ausblenden 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;

ausblenden 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