Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Werte aus einer Ini Datei Lesen funktioniert nicht so ganz (https://www.delphipraxis.net/173531-werte-aus-einer-ini-datei-lesen-funktioniert-nicht-so-ganz.html)

Back2Code 1. Mär 2013 12:14

Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Also ich bin gerade dabei die Sektionen, Abschnitte & Werte jeweils in eine Stringlist zu packen. Es funktioniert eigentlich alles richtig, außer das Auslesen der Werte. Da bekomm ich ledliglich die Werte immer von dem letzten Abschnitt.

Wie bekomm ich es jetzt hinn, dass ALLE Werte von allen Abschnitten in meiner Stringlist vorhanden sind.


Hier ein Auszug von meinem Code:

Delphi-Quellcode:
procedure TFrmHpt.OpenIniAndFillOutDB(inilist: TStringList);
var i, ii, jj, j, x, Value, AbschnittsZähler: Integer;
    Modul, Abschnitt, fullFileName: String;
    ini: TIniFile;
    Sektionen, Werte, Schlüssel, Abschnitte : TStringList;
begin
  //ShowMessage((inilist.Strings[2]));
  for i := 0 to inilist.Count-1 do
  begin
    ini := TIniFile.Create(inilist.Strings[i]);
    Sektionen := TStringList.Create;
    Abschnitte := TStringList.Create;
    Schlüssel := TStringlist.Create;
    Werte := TStringList.Create;
    fullFileName := inilist.Strings[i];
    Modul := ExtractFileName(fullFileName); // Dateiname aktueller Ini i z.b hphabirgendwas.ini;
    AbschnittsZähler := INISectionsCount(fullFileName); // Abschnittszäher = Wie viele Abschnitte gibt es in der aktuellen Ini
    Ini.ReadSections(Sektionen); // Jetzt sind alle Sektionen in der StringList Sektionen

    //Alle Abschnitte in die Stringlist Abschnitte packen
    for j := 0 to Sektionen.Count-1 do // Schleife und durch jede Sektion durchgehen
      begin
        ini.ReadSection(Sektionen.Strings[j], Abschnitte);
      end;

    // Alle Werte mit Abschnitten davor in die Stringlist Werte packen
    for jj := 0 to Abschnitte.Count-1 do
      begin
        ini.ReadSectionValues(Sektionen.Strings[jj], Werte); //<-- Da muss irgendwo der Fehler liegen
      end;

  Sektionen.SaveToFile  ('C:\Users\adminn\Desktop\aTest\Sektionen.txt');
  Abschnitte.SaveToFile ('C:\Users\admin\Desktop\aTest\Abschnitte.txt');
  Werte.SaveToFile      ('C:\Users\admin\Desktop\aTest\Werte.txt');

mkinzler 1. Mär 2013 12:15

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Erzeuge die IniFile-Instanz mal außerhalb der Schleife

Back2Code 1. Mär 2013 12:30

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Jetzt sagt er mir :

Listenindex überschreitet das Maximum(1637344)

mkinzler 1. Mär 2013 12:39

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Wo?

Back2Code 1. Mär 2013 12:40

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Zitat:

Zitat von mkinzler (Beitrag 1205595)
Wo?

Beim einlesen der Inis.

mkinzler 1. Mär 2013 12:46

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Poste noch einmal den aktuellen Code

Back2Code 1. Mär 2013 12:48

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Hier:

Delphi-Quellcode:
procedure TFrmHpt.Import1Click(Sender: TObject);
var Pfad: string;
    IniPfade: TStringlist;
begin
  IniPfade := TStringList.Create;
  processing := True;
  try
  Application.CreateForm(TFrmLoading, FrmLoading);
  SelectDirectory('Ordner auswählen', '' ,Pfad);
  FrmLoading.Show;

  GetFilesInDirectory(Pfad, '*.ini', IniPfade, True, True );

  OpenIniAndFillOutDB(IniPfade);

  FrmLoading.Hide;
  finally
    processing := False;
    IniPfade.Free;
  end;
end;

// readSections = alle sektionen auslesen // readsection = bestimmte sektion auslesen
procedure TFrmHpt.OpenIniAndFillOutDB(inilist: TStringList);
var i, ii, jj, j, x, Value, AbschnittsZähler: Integer;
    Modul, Abschnitt, fullFileName: String;
    ini: TIniFile;
    Sektionen, Werte, Schlüssel, Abschnitte : TStringList;
begin
  //ShowMessage((inilist.Strings[2]));
  for i := 0 to inilist.Count-1 do
  begin
    ini := TIniFile.Create(inilist.Strings[i]);
    Sektionen := TStringList.Create;
    Abschnitte := TStringList.Create;
    Schlüssel := TStringlist.Create;
    Werte := TStringList.Create;
    fullFileName := inilist.Strings[i];
    Modul := ExtractFileName(fullFileName); // Dateiname aktueller Ini i z.b hphabirgendwas.ini;
    AbschnittsZähler := INISectionsCount(fullFileName); // Abschnittszäher = Wie viele Abschnitte gibt es in der aktuellen Ini
    Ini.ReadSections(Sektionen); // Jetzt sind alle Sektionen in der StringList Sektionen

    //Alle Abschnitte in die Stringlist Abschnitte packen
    for j := 0 to Sektionen.Count-1 do // Schleife und durch jede Sektion durchgehen
      begin
        ini.ReadSection(Sektionen.Strings[j], Abschnitte);
      end;

    // Alle Werte mit Abschnitten davor in die Stringlist Werte packen
    for jj := 0 to Abschnitte.Count-1 do
      begin
        ini.ReadSectionValues(Sektionen.Strings[jj], Werte);
      end;

  Sektionen.SaveToFile  ('C:\Users\admin\Desktop\aTest\Sektionen.txt');
  Abschnitte.SaveToFile ('C:\Users\admin\Desktop\aTest\Abschnitte.txt');
  Werte.SaveToFile      ('C:\Users\admin\Desktop\aTest\Werte.txt');

  end;


  // Jeweile Ini von inilist.Strings[i] öffnen. Sektionen / Values / Modulname holen und in Datenbank schreiben.
  // Überprüfen ob bereits vorhanden, wenn nicht dann eintragen.
end;

p80286 1. Mär 2013 12:49

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Delphi-Quellcode:
       // Alle Werte mit Abschnitten davor in die Stringlist Werte packen
    for jj := 0 to Abschnitte.Count-1 do
      begin
        ini.ReadSectionValues(Sektionen.Strings[jj], Werte); //<-- Da muss irgendwo der Fehler liegen
      end;
Auch wenn es passen sollte:
for jj := 0 to Abschnitte.Count-1 do
ini.ReadSectionValues(Sektionen.Strings[jj], Werte);
das ist zumindestens ungeschickt.

Gruß
K-H

Klaus01 1. Mär 2013 12:50

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
.. steht in inilist.Strings[i] der komplette Pfad (mit iniNamen) der ini Datei?

Grüße
Klaus

Back2Code 1. Mär 2013 12:52

AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
 
Zitat:

Zitat von Klaus01 (Beitrag 1205601)
.. steht in inilist.Strings[i] der komplette Pfad (mit iniNamen) der ini Datei?

Grüße
Klaus

Richtig. Hab eben auch noch die Procedure eins oben drüber gepostet, dann sollte ersichtlicher sein woher die Daten wie worein kommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
Seite 1 von 3  1 23      

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