Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Имееться 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
6-1084013849
undersun
2004-05-08 14:57
2004.07.04
Как теоретически соединяються два клиента которые оба за NAT-ом


4-1085565849
Yustas
2004-05-26 14:04
2004.07.04
Память


3-1086329624
t100
2004-06-04 10:13
2004.07.04
SQL-запрос


11-1076154241
Sewix
2004-02-07 14:44
2004.07.04
Мне нужно создать n EditBox’ов


3-1086690447
kalliopiy
2004-06-08 14:27
2004.07.04
Прокручивание Grid а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский