Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

Сортировка колонки в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
2-1134924381
newhite
2005-12-18 19:46
2006.01.08
Звездочки


14-1134647613
Хинт
2005-12-15 14:53
2006.01.08
Оптимизация и/или защита DLL


14-1134664429
NickX
2005-12-15 19:33
2006.01.08
Компилирование


8-1123097311
Кот
2005-08-03 23:28
2006.01.08
Проблемы с загрузкой jpg в Image.


9-1122297205
Warchief
2005-07-25 17:13
2006.01.08
Поиск пути для "многоклеточных объектов"