Registriert seit: 6. Apr 2005
10.109 Beiträge
|
Re: INI-Datei sortieren
14. Aug 2005, 22:52
Zitat von st18061974:
Und ich würde ihm einfach ein Tool bauen wollen das diese INI sortiert. Ohne das man noch irgend etwas machen muß.
Wenn das so ist, dann probiere mal, ob du diesen Code (mit D5?) zum Laufen bringst:
Delphi-Quellcode:
uses
Classes,
IniFiles,
SysUtils;
const
tmj = 'dd.mm.yyyy';
jmt = 'yyyy-mm-dd';
function ReformatStr(const s, sRule: string): string;
var
i: integer;
begin
Result := '';
for i := 1 to Length(sRule) do
Result := Result + s[Ord(sRule[i])];
end;
function ZeroPad(const i: cardinal; size: byte): string;
begin
Result := IntToStr(i);
if Length(Result) < size then
Result := StringOfChar('0', size - Length(Result)) + Result;
end;
procedure IniSort;
var
ini: TMemIniFile;
s, sKey, sSection: string;
slSort, slValues, slSection: TStringList;
i, j, iAnzahl: integer;
begin
slSort := TStringList.Create;
slSection := TStringList.Create;
ini := TMemIniFile.Create(ParamStr(1));
iAnzahl := ini.ReadInteger('.', 'anzahl', 0);
for i := 1 to iAnzahl do begin
sSection := IntToStr(i);
if ini.SectionExists(sSection) then begin
s := ini.ReadString(sSection, 'Datum', '');
s := ReformatStr(s, #7#8#9#10#4#5#1#2);
ini.ReadSectionValues(sSection, slSection);
s := s + ZeroPad(i, 4);
slValues := TStringList.Create;
slValues.Assign(slSection);
slSort.AddObject(s, slValues);
end;
end;
slSort.Sort;
ini.Clear;
ini.WriteString('.', 'Anzahl', IntToStr(iAnzahl));
for i := 0 to slSort.Count - 1 do begin
sSection := Copy(slSort[i], 9, 4);
sSection := IntToStr(StrToInt(sSection));
slSection := TStringList(slSort.Objects[i]);
for j := 0 to slSection.Count - 1 do begin
sKey := slSection.Names[j];
ini.WriteString(sSection, sKey, slSection.Values[sKey]);
end;
slSection.Free;
end;
ini.UpdateFile;
ini.Free;
slSort.Free;
end;
Grüße vom marabu
|
|
Zitat
|