Thema: Delphi INI-Datei sortieren

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: INI-Datei sortieren

  Alt 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
  Mit Zitat antworten Zitat