Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
Delphi XE7 Professional
|
AW: Werte aus einer Ini Datei Lesen funktioniert nicht so ganz
1. Mär 2013, 13:48
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;
|
|
Zitat
|