Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#1

array of record sortieren

  Alt 7. Dez 2020, 15:58
Bekomme es wieder nicht gebacken.

Delphi-Quellcode:
procedure TSkinListView.SortItems(hListView: hWnd; ColumnIndex: Integer);
var
  i, j : Integer;
  hItemsInfo : TItemsInfo;
  StringList: TStringList;
  ItemCount: Integer;
  buf: array [0 .. 255] of Char;
  ItemText: PWideChar;
begin

  ListView_SortItems(hListView, @CompareFunc, ColumnIndex); // Liste wird sortiert

  StringList := TStringList.Create;
  try
    ItemCount := ListView_GetItemCount(hListView);

    for i := 0 to ItemCount - 1 do
    begin
      ZeroMemory(@buf, sizeof(buf));
      ListView_GetItemText(hListView, i, 1, buf, sizeof(buf));
      ItemText := buf;

      StringList.Add(ItemText); // Stringliste anhand der Sortierung erstellen.
    end;

    for i := High(ItemsInfo) downto Low(ItemsInfo) do
    begin
      for j := 0 to (i - 1) do
      begin
        // Problem es wird nur der nächste mit dem vorherigen getauscht.
        if StringList[j] > ItemsInfo[j].IdentStr then
        begin
          hItemsInfo := ItemsInfo[j];
          ItemsInfo[J] := ItemsInfo[j + 1];
          ItemsInfo[J + 1] := hItemsInfo;
        end;
      end;
    end;
  finally
    StringList.Free;
  end;
end;
Ich möchte das Array so sortieren das der "StringList[j]" String gleich ist mit dem IdentStr.
Kann wer helfen und sagen was falsch läuft.
  Mit Zitat antworten Zitat