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.