Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#7

AW: array of record sortieren

  Alt 7. Dez 2020, 22:40
Das ist der Code aus deinem ersten Post. Habe ich mal umgemodelt. Einfach getippt. Nicht getestet.

Delphi-Quellcode:
procedure TSkinListView.SortItems(hListView: hWnd; ColumnIndex: Integer);
var
  i, j : Integer;
  lItemsInfoArray : array of 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;

    //***************************************************************************************
    // Das hier habe ich mal zugefügt ...
    SetLength(lItemsInfoArray,length(ItemsInfo));

    for i := High(ItemsInfo) downto Low(ItemsInfo) do
      begin
        j := StringList.IndexOf(ItemsInfo[i].IdentStr);
        if j>=0 then
          begin
            lItemsInfoArray[j] := ItemsInfo[i];
            StringList[j] := 'Irgend ein Text, damit das Item nicht mehr gefunden wird. Ist ja schon zugewiesen';
          end
        else
          begin
            // Hier ne Fehlerbehandlung rein
          end;
      end;
    // in lItemsInfoArray haben wir jetzt die korrekte Reihenfolge. Nun wieder zurück kopieren.
    for i := High(lItemsInfoArray) downto Low(lItemsInfoArray) do
      ItemsInfo[i] := lItemsInfoArray[i];
    // und zwar bis hier hin zugefügt
    //***************************************************************************************


  finally
    StringList.Free;
  end;
end;
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat