Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
Внизсортировка строк в TStringList по убыванию Найти похожие ветки
← →
Chuck Bass (2012-01-26 17:30) [0]
procedure TForm1.Button2Click(Sender: TObject);
function Compare(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := ANSICompareText(List[Index1], List[Index2]);
end;
var
SL: TStringList;
begin
SL := TStringList.Create.Create;
try
SL.Add("Строка B");
SL.Add("Строка A");
SL.Add("Строка C");
SL.Add("Строка D");
SL.Add("Строка E");
SL.CustomSort(@Compare);
ShowMessage(SL.Text);
except
SL.Free;
end;
end;
как отсортировать по убыванию?
← →
Dimka Maslov © (2012-01-26 17:34) [1]переставить местами Index1 и Index2
Result := ANSICompareText(List[Index2], List[Index1]);
← →
Сергей М. © (2012-01-26 17:35) [2]Ты не поверишь - проще пареной репы:
Result := -ANSICompareText(List[Index1], List[Index2]);
или
Result := ANSICompareText(List[Index2], List[Index1]);
← →
Chuck Bass (2012-01-26 17:39) [3]Спасибо.
← →
Anatoly Podgoretsky © (2012-01-26 21:22) [4]Зачем? Обычно это никогда не требуется
← →
Сергей М. © (2012-01-26 21:27) [5]
> Anatoly Podgoretsky © (26.01.12 21:22) [4]
У тебя "обычно" какое-то необычное)
← →
Anatoly Podgoretsky © (2012-01-26 21:32) [6]> Сергей М. (26.01.2012 21:27:05) [5]
Зачем когда существует цикл downto
← →
Сергей М. © (2012-01-26 21:39) [7]
> Anatoly Podgoretsky © (26.01.12 21:32) [6]
Да дохрена еще чего существует.
← →
Anatoly Podgoretsky © (2012-01-26 23:04) [8]В большинстве случае сортировку можно заменить обратным проходом, это только на пользу производительности.
← →
Сергей М. © (2012-01-27 09:23) [9]
> Anatoly Podgoretsky © (26.01.12 23:04) [8]
Толя, ну вот что ты из штанов выпрыгиваешь ?)
Есть некий чужой процедурный код - черный ящик -, который вх.параметром ожидает заполненный строками объект-наследник TStrings, полагая что за сортировку строк в списке отвественен вызывающий код, если таковая ему вообще нужна.
Разве это из ряда вон выходящая ситуация ?
И каким боком в такой совершенно обычной ситуации "обратный проход" ?)
← →
Anatoly Podgoretsky © (2012-01-27 10:03) [10]Я же написал "В большинстве случаев", твой случай не попадает под это. Это специально придуманый случай, в большинстве случаев TStringList не так часто передается в качестве параметра функции
← →
Anatoly Podgoretsky © (2012-01-27 10:07) [11]И автор так и не ответил на вопрос "Зачем?"
Может он просто хочет распечатать в обратном порядке и найти наибольшее число и ему ничего в голову не пришло, как орсортировать в обратом порядке и взять первое значение, да мало ли чего ему в голову пришло, а предлагать алгоритм не зная задачи как то неправильно.
← →
Сергей М. © (2012-01-27 10:11) [12]
> в большинстве случаев TStringList не так часто передается
> в качестве параметра функции
Да похрену что туда передается)
Вызываемый код ведь ничего не знает о состоянии упорядоченности строк в передаваемом списке, если это не наследник TStringList..
← →
icWasya © (2012-01-27 10:12) [13]И кстати - функция Compare должна быть свободной функцией - а она у Вас вложенная в Button2Click.
← →
Сергей М. © (2012-01-27 10:15) [14]
> icWasya © (27.01.12 10:12) [13]
>
> И кстати - функция Compare должна быть свободной функцией
Это с какого же перепугу ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c