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'); |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Erzeuge die IniFile-Instanz mal außerhalb der Schleife
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Jetzt sagt er mir :
Listenindex überschreitet das Maximum(1637344) |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Wo?
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Poste noch einmal den aktuellen Code
|
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; |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Delphi-Quellcode:
Auch wenn es passen sollte:
// 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; for jj := 0 to Abschnitte.Count-1 do ini.ReadSectionValues(Sektionen.Strings[jj], Werte); das ist zumindestens ungeschickt. Gruß K-H |
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 |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
PS: Die hartkodierten Pfade lässt du am besten auch gleich weg. MfG Dalai |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Delphi-Quellcode:
Genau! Bei jedem Aufruf wird der aktuelle Inhalt von Werte gelöscht.
ini.ReadSectionValues(Sektionen.Strings[jj], Werte); //<-- Da muss irgendwo der Fehler liegen
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
Delphi-Quellcode:
Das ist doch Käse. Erzeuge die Listen ini, Sektionen & Co einmalig vor der Schleife und leere sie, sofern nötig, mit TStringList.Clear innerhalb der for-Schleife. [ADD] Und zu jedem TStringList.Create gehört ein TStringList.Free.[/ADD]
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; [...] 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'); MfG Dalai |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
Delphi-Quellcode:
Das begeistert zwar nicht, aber ist wohl nur für die Testausgabe.
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'); Oder war das Deine Bewerbung für den Job in Rom ;-) Gruß K-H |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Ja also wie es der Ordner vermuten lässt, besteht die Speicherfunktion lediglich für Teste bis ich sehe, dass meine Stringlisten richtig gefüllt sind.
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
Delphi-Quellcode:
verwendest. Danach überträgst du das per
ReadSectionValues
Delphi-Quellcode:
.
Werte.AddStrings
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Delphi-Quellcode:
Da Ini für jede inilist[i] neu gebraucht wird, oder geht's auch anders?
Sektionen := TStringList.Create;
Abschnitte := TStringList.Create; Schlüssel := TStringlist.Create; Werte := TStringList.Create; for i := 0 to inilist.Count-1 do begin ini := TIniFile.Create(inilist.Strings[i]); ..... ini.free; end; Gruß K-H |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Übrigens: der Sinn von Abschnitte erschließt sich nicht ganz. ReadSectionValues liest immer Key-Value Paare ein.
Überhaupt bleibt deine eigentliche Absicht bei dem Code verborgen. Einzig der Kommentar am Ende bringt etwas Licht, stimmt aber nicht mit dem Code überein. |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
Sorry für OT. MfG Dalai |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Zitat:
MfG Dalai |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Habe ich auch nichts anderes behauptet. Im Code wird doppelt gemoppelt, Speicherlecks erstellt und immer wieder aufs neue unnötig TStringLists erstellt.
EDIT: Übrigens, finde nur ich das etwas sonderbar oder ist es neuerdings, also in neuen Delphiversionen möglich Umlaute in Bezeichnern zu verwenden?
Delphi-Quellcode:
Schlüssel := TStringlist.Create;
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
In aktuellen Delphis kein Thema, auch wenn ich so etwas nach wie vor vermeide.
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
[OT]
Zitat:
Gruß K-H |
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
Verrate doch mal was du eigentlich mit der ganzen Aktion bezweckst.
Kann es sein, dass du die Ini-Dateien zusammenführen möchtest? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr. |
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