|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сортировка по VALUE в ValueListEditor
Добрый день. Есть процедура,которая сортирует пару KEY--VALUE(слово--число) по значению VALUE и передает результат в ValueListEditor, для просмотра
Код:
procedure SortVLE; (*---------------------------*) function MyCompare(List: TStringList; Index1, Index2: Integer): Integer; begin Result := AnsiCompareStr(List.ValueFromIndex[Index2], List.ValueFromIndex[Index1]) end; (*---------------------------*) var fSL : TStringList; begin fSL := TStringList.Create; try fSL.Text := MainForm.ValueListEditor1.Strings.Text; fSL.CustomSort(@MyCompare); MainForm.ValueListEditor1.Strings.Text := fSL.Text; finally FreeAndNil(fSL); end end; рпрпропопр--99 пиропиррор--87 прррпррппр--33 титититьит--223 рпрпрпрпрр--12 хотя строка титититьит--223 в ValueListEditor должна быть наверху так как 223 больше чем 99 Вопрос: где ошибка и как поправить? |
#2
|
||||
|
||||
Потому что числа у тебя сравниваются как строки. Переводи стоку в число и потом сравнивай.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
ага
Код:
function MyCompare(List: TStringList; Index1, Index2: Integer): Integer; begin Result:=CompareValue(StrToFloat(List.ValueFromIndex[Index2]),StrToFloat(List.ValueFromIndex[Index1])); end; там еще дробные числа нужно обрабатывать |