Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1327516969
Псарь
2012-01-25 22:42
2012.06.03
Как вы следите за обновлениями?


15-1327682610
tesseract
2012-01-27 20:43
2012.06.03
По поводу совместимости Delphi


10-1178246235
Igreh
2007-05-04 06:37
2012.06.03
создание COM


2-1327746260
Festil
2012-01-28 14:24
2012.06.03
Динамические TButton, определение нажатия.


15-1327869002
Юрий
2012-01-30 00:30
2012.06.03
С днем рождения ! 30 января 2012 понедельник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский