![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имееться ListView в котором надо сортировать числа. [D7, WinXP]
Gemini © (2004-06-15 16:04:00)Необходимо производить сортировку чисел. Причем числа могут быть как 3 значные (285) так и 32 значные (80503453473636223464357845345678) . Как тут поступить. К какому типу отнести 32 значные числа?
Gemini (2004-06-16 13:45:00) [1]Огромное спасибо!
Digitman (2004-06-16 11:42:00) [2]procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
Text1, Text2: String;
begin
Text1 := StringOfChar('0', 32);
Text2 := StringOfChar('0', 32);
StrCopy(@Text1[32 - Length(Item1.Caption) + 1], PChar(Item1.Caption));
StrCopy(@Text2[32 - Length(Item2.Caption) + 1], PChar(Item2.Caption));
Compare := CompareText(Text1, Text2);
end;
JohnnyJ (2004-06-16 11:23:00) [3]
> К сожалению при попытке преобразования
> StrToInt(234295834958234958239458) возникнет ошибка
Тогда StrToInt8 :)
Gemini (2004-06-16 00:03:00) [4]К сожалению при попытке преобразования
StrToInt(234295834958234958239458) возникнет ошибка
Mim1 (2004-06-15 22:27:00) [5]Каюсь, можно проще
используйте sotytype = stData и событие OnCompare
при
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
begin
Compare := strtoint(item1.caption) - strtoint(item2.caption);
end;
если числа не в первом столбце то
item1.caption заменить на item1.subitems[3], где 3 - номер столбца +2.
panov (2004-06-15 21:47:00) [6]Используй расширенную сортировку в TStringList - TStringList.CustomSort для нужных значений.
Gemini (2004-06-15 21:05:00) [7]Я не знаю к какому типу отнести 32 разрядное число!!! К integer? или к Extended? Но у них длина числа 19-20 знаков
Vit@ly (2004-06-15 20:58:00) [8]Возможно используя свойство Width. И параллельно: в чем прикол (смысл)?
Gemini (2004-06-15 20:53:00) [9]А как кстати создать в ListView невидимый столбец?
И какой тип у 32 значного числа?
Mim1 (2004-06-15 19:40:00) [10]Можно создать невидимый столбец при добавлении строки в который будет записвается число дополеное нулями, например 00000001, 00000432. Сортировать по нему.