(Gast)
n/a Beiträge
|
AW: array of record sortieren
7. Dez 2020, 18:01
Danke werde mir das mal anschauen.
Dachte ich könnte das direkt in meine sortier Funktion mit übertragen.
Nur weis ehrlich nicht wie.
Delphi-Quellcode:
function CompareFunc(lp1, lp2, SubItem: LParam): Integer; stdcall;
var
buf1, buf2: WideString;
a, b: Integer;
begin
SetLength(buf1, MAX_PATH);
ZeroMemory(@buf1[1], MAX_PATH);
SetLength(buf2, MAX_PATH);
ZeroMemory(@buf2[2], MAX_PATH);
ListView_GetItemText(LVHandle, lp1, SubItem, @buf1[1], MAX_PATH);
ListView_GetItemText(LVHandle, lp2, SubItem, @buf2[1], MAX_PATH);
case ColumnInfo[SubItem].SortType of
// Dateigröße
sortInt:
begin
// alles nach dem Leerzeichen entfernen (z.B. "12345 B")
if (pos(#32, buf1) > 0) then
delete(buf1, pos(#32, buf1), length(buf1));
if (pos(#32, buf2) > 0) then
delete(buf2, pos(#32, buf2), length(buf2));
if UpDown then
begin
b := StrToIntDef(buf1, 0);
a := StrToIntDef(buf2, 0);
end
else
begin
a := StrToIntDef(buf1, 0);
b := StrToIntDef(buf2, 0);
end;
if (a > b) then
Result := 1
else if (a < b) then
Result := -1
else
Result := 0;
end
// Name oder Typ
else
begin
if UpDown then
Result := lstrcmpi(@buf2[1], @buf1[1])
else
Result := lstrcmpi(@buf1[1], @buf2[1]);
end;
end;
end;
Geändert von venice2 ( 7. Dez 2020 um 18:04 Uhr)
|
|
Zitat
|