Форум: "Основная";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
ВнизСортировка колонки в ListView Найти похожие ветки
← →
dDan (2005-12-05 20:44) [0]Возникла проблема сортирует но выдает чушь какуюто
Делаю так:
procedure TForm1.ListColumnClick(Sender: TObject; Column: TListColumn);
..........
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
result:=0;
if strtodatetime(item1.SubItems[0])>strtoint(item2.SubItems[0]) then
Result :=1 else
if strtodatetime(item1.SubItems[0])<strtoint(item2.SubItems[0]) then
Result :=-1;
end;
........
List.CustomSort(@CustomDateSortProc, 0)
Может кто подскажет лучшие методы сортировки чисел
← →
begin...end © (2005-12-05 20:59) [1]> dDan (05.12.05 20:44)
Функция написана нормально. Только непонятно, почему результат StrToDateTime сравнивается с результатом StrToInt. Как должны быть отсортированы числа?
← →
dDan (2005-12-05 21:58) [2]Да просто так функцию назвал по возрастанию должны быть отсортированны
← →
begin...end © (2005-12-05 22:05) [3]> dDan (05.12.05 21:58) [2]
Так что там, в столбце? Целые числа? Я проверил (только StrToDateTime заменил на StrToInt) -- всё нормально работает. Поскольку у Вас Delphi 7, можно записать код короче (но в uses нужно будет добавить модуль Math):
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer; stdcall;
begin
Result := CompareValue(StrToInt(Item1.SubItems[0]), StrToInt(Item2.SubItems[0]))
end
← →
dDan (2005-12-05 22:31) [4]Твоя функция вообще отказываеться работать
← →
Германн © (2005-12-06 02:04) [5]
> dDan (05.12.05 20:44)
>
> Возникла проблема сортирует но выдает чушь какуюто
> Делаю так:
> procedure TForm1.ListColumnClick(Sender: TObject; Column:
> TListColumn);
> ..........
>
> function CustomDateSortProc(Item1, Item2: TListItem; ParamSort:
> integer): integer; stdcall;
> begin
> result:=0;
> if strtodatetime(item1.SubItems[0])>strtoint(item2.SubItems[0])
> then
> Result :=1 else
> if strtodatetime(item1.SubItems[0])<strtoint(item2.SubItems[0])
> then
> Result :=-1;
> end;
>
> ........
> List.CustomSort(@CustomDateSortProc, 0)
>
>
> Может кто подскажет лучшие методы сортировки чисел
О каких "числах" ты тут спрашиваешь? О календарных или о математических?
Если о календарных, то тут, имхо присутствует ещё и время, а оно "не вписывается" в сравнениях с integer.
← →
begin...end © (2005-12-06 12:27) [6]> dDan (05.12.05 22:31) [4]
Значит, в столбце -- не целые цисла.
← →
MU © (2005-12-06 15:23) [7]Если там даты и время(?) в строковом выражении, то, может
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer; begin
Result := Trunc(
StrToDateTime(Item1.SubItems[0]) -
StrToDateTime(Item2.SubItems[0])
);
end
← →
MU © (2005-12-06 15:24) [8]Извините....
function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer;
begin
Result := Sign(
StrToDateTime(Item1.SubItems[0]) -
StrToDateTime(Item2.SubItems[0])
);
end
← →
dDan (2005-12-06 20:49) [9]Да нет там целые числа чего к названию о функции такое внимание :) Вроде разобрался.
← →
begin...end © (2005-12-06 21:47) [10]> dDan (06.12.05 20:49) [9]
> Да нет там целые числа
А если там целые числа, то [3] должно работать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c