Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2014, 12:00   #1
Ares80
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 13
Сообщение Сортировка в ListBox снизу вверх

Всем привет!
Прошу помощи:
Код:
var S : TStringList;

begin
S := TStringList.Create;
S.Sorted := True;

IdFTP.List(S, '', False);

S.Sort;

ListBox.Items := S;
end;
Получаю :
2014_12_02-14_58
2014_12_02-15_00
2014_12_02-15_23

Нужно :
2014_12_02-15_23
2014_12_02-15_00
2014_12_02-14_58

Свое решение, S1 можно исключить сразу подставить ListBox:

Код:
var 
I : Integer;
S, S1 : TStringList;

begin
S := TStringList.Create;
S1 := TStringList.Create;
S.Sorted := True;

IdFTP.List(S, '', False);

S.Sort;

for I := S.Count -1 downto S.Count -10 do S1.Add(S[I]); // 10 последних файлов на FTP
    
ListBox.Items := S1;
end;
Решение от Аватар, используется CustomSort():

Код:
function MySort(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result:=-CompareText(List.Strings[Index1],List.Strings[Index2]);
end;
...
//  S.Sorted := True; - этого не надо
  S.CustomSort(MySort);
  ListBox.Items.Assign(S);
  S.Free;

Последний раз редактировалось Ares80; 04.12.2014 в 11:57.
Ares80 вне форума Ответить с цитированием
Старый 03.12.2014, 12:15   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

см. метод CustomSort
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.12.2014, 12:19   #3
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

В ListBox, случайно, сортировка не true?
Iron Monk вне форума Ответить с цитированием
Старый 03.12.2014, 12:22   #4
Ares80
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 13
По умолчанию

Аватар, смотрел, каша - малаша )
Iron Monk, S.Sorted := True сортирует в читабельном виде:
2014_12_02-14_58
2014_12_02-15_00
2014_12_02-15_23
А вот как перевернуть....
Ares80 вне форума Ответить с цитированием
Старый 03.12.2014, 12:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
каша - малаша
Правильно пользоваться не будет каши и малаши
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.12.2014, 12:27   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Ares80 Посмотреть сообщение
Аватар, смотрел, каша - малаша )
Iron Monk, S.Sorted := True сортирует в читабельном виде:
2014_12_02-14_58
2014_12_02-15_00
2014_12_02-15_23
А вот как перевернуть....
Обратным циклом добавлять в ListBox.
Iron Monk вне форума Ответить с цитированием
Старый 03.12.2014, 12:59   #7
Ares80
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 13
По умолчанию

Аватар, Iron Monk, спасибо за ответы.

Сделал так:

Код:
var 
I : Integer;
S, S1 : TStringList;

begin
S := TStringList.Create;
S1 := TStringList.Create;
S.Sorted := True;

IdFTP.List(S, '', False);

S.Sort;

for I := S.Count -1 downto S.Count -10 do S1.Add(S[I]); // 10 последних файлов на FTP
    
ListBox.Items := S1;
end;

Последний раз редактировалось Ares80; 03.12.2014 в 13:13.
Ares80 вне форума Ответить с цитированием
Старый 03.12.2014, 13:22   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
function MySort(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result:=-CompareText(List.Strings[Index1],List.Strings[Index2]);
end;
...
//  S.Sorted := True; - этого не надо
  S.CustomSort(MySort);
  ListBox.Items.Assign(S);
  S.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.12.2014, 13:45   #9
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Ares80 Посмотреть сообщение
Аватар, Iron Monk, спасибо за ответы.

Сделал так:

Код:
var 
I : Integer;
S, S1 : TStringList;

begin
S := TStringList.Create;
S1 := TStringList.Create;
S.Sorted := True;

IdFTP.List(S, '', False);

S.Sort;

for I := S.Count -1 downto S.Count -10 do S1.Add(S[I]); // 10 последних файлов на FTP
    
ListBox.Items := S1;
end;
А зачем второй StringList?
Код:
for i := S.Count - 1 downto 0 do ListBox.Items.add(S[i]);
Iron Monk вне форума Ответить с цитированием
Старый 03.12.2014, 14:00   #10
Ares80
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 13
По умолчанию

Iron Monk, на будущее ListBox`a потом не будет.
Ares80 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в Excel снизу вверх druman Microsoft Office Excel 12 20.01.2014 17:39
Поиск позиции снизу вверх. agregator Microsoft Office Excel 4 13.11.2013 16:15
c# обход строки снизу вверх world12_tk Помощь студентам 11 31.10.2013 14:07
Бегущая строка снизу вверх в RichEdit furstenberg Компоненты Delphi 1 29.03.2011 10:32
Функция Pos, поиск снизу вверх RIO Общие вопросы Delphi 4 11.01.2010 23:17