Einzelnen Beitrag anzeigen

Benutzerbild von PaPaNi
PaPaNi

Registriert seit: 31. Mär 2022
45 Beiträge
 
#16

AW: Dateinamen auslesen und sortieren

  Alt 6. Apr 2023, 17:50
Kannst du vielleicht damit anfangen? Hier habe ich kurz ein Beispiel ohne string.compare gebastelt. Das funktioniert bei mir im Delphi 2007.

Delphi-Quellcode:
function MySortCompare(List: TStringList; Index1, Index2: Integer): Integer;
var
  wStr1: WideString;
  wStr2: WideString;
  Flags: Dword;
begin
  wStr1 := List[Index1];
  wStr2 := List[Index2];
  Flags := 9; // coDigitAsNumbers + coIgnoreCase
  Result := CompareStringW(LOCALE_USER_DEFAULT, Flags, PWideChar(wStr1), Length(wStr1), PWideChar(wStr2), Length(wStr2)) - CSTR_EQUAL;
end;

procedure Tf_Tester.TestCustomSort;
var
  SL: TStringList;
  i: Integer;
begin
  m_test.Clear;
  SL := TStringList.Create;
  try
    SL.Add('2.6.1.csv');
    SL.Add('4.5.csv');
    SL.Add('4.9.1.csv');
    SL.Add('1.3.csv');
    SL.Add('2.3.csv');
    SL.Add('2.6.2.csv');
    SL.Add('1.7.csv');
    SL.Add('4.9.2.csv');
    SL.Add('1.6.csv');
    SL.Add('2.8.csv');
    SL.Add('2.6.3.csv');
    SL.Add('4.8.csv');
    SL.Add('2.12.csv');

    SL.CustomSort(@MySortCompare);
    for i := 0 to Pred(SL.Count) do begin
      m_test.Lines.Add(SL[i]);
    end;
  finally
    FreeAndNil(SL);
  end;
end;
Zitat:
Das Ergebnis:
1.3.csv
1.6.csv
1.7.csv
2.3.csv
2.6.1.csv
2.6.2.csv
2.6.3.csv
2.8.csv
2.12.csv
4.5.csv
4.8.csv
4.9.1.csv
4.9.2.csv
  Mit Zitat antworten Zitat