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

Вниз

Имееться ListView в котором надо сортировать числа.   Найти похожие ветки 

 
Gemini   (2004-06-15 16:04) [0]

Необходимо производить сортировку чисел. Причем числа могут быть как 3 значные (285) так и 32 значные (80503453473636223464357845345678) . Как тут поступить. К какому типу отнести 32 значные числа?


 
Mim1 ©   (2004-06-15 19:40) [1]

Можно создать невидимый столбец при добавлении строки в который будет записвается число дополеное нулями, например 00000001,  00000432. Сортировать по нему.


 
Gemini   (2004-06-15 20:53) [2]

А как кстати создать в ListView невидимый столбец?
И какой тип у 32 значного числа?


 
Vit@ly ©   (2004-06-15 20:58) [3]

Возможно используя свойство Width. И параллельно: в чем прикол (смысл)?


 
Gemini   (2004-06-15 21:05) [4]

Я не знаю к какому типу отнести 32 разрядное число!!! К integer? или к Extended? Но у них длина числа 19-20 знаков


 
panov ©   (2004-06-15 21:47) [5]

Используй расширенную сортировку в TStringList - TStringList.CustomSort для нужных значений.


 
Mim1 ©   (2004-06-15 22:27) [6]

Каюсь, можно проще
используйте 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.


 
Gemini   (2004-06-16 00:03) [7]

К сожалению при попытке преобразования
StrToInt(234295834958234958239458) возникнет ошибка


 
JohnnyJ   (2004-06-16 11:23) [8]


> К сожалению при попытке преобразования
> StrToInt(234295834958234958239458) возникнет ошибка


Тогда StrToInt8 :)


 
Digitman ©   (2004-06-16 11:42) [9]

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;


 
Gemini   (2004-06-16 13:45) [10]

Огромное спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
3-1086674379
din
2004-06-08 09:59
2004.07.04
Как выделить вругим цветом


14-1087186912
X9
2004-06-14 08:21
2004.07.04
Новый проц


1-1087746659
AlexG
2004-06-20 19:50
2004.07.04
Операция Merge неправильно выполняется


1-1087875404
Andrey V.
2004-06-22 07:36
2004.07.04
RadioButtons as RadioGroup


8-1081152480
SDV
2004-04-05 12:08
2004.07.04
Помещение изображения в TMemoryStream