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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2013, 00:15   #1
Pilyla
Пользователь
 
Регистрация: 16.12.2012
Сообщений: 42
По умолчанию Сортировка по убыванию StringGrid

Здравствуйте . есть код сортировки по возрастанию. что нужно изменить,чтобы была сортировка по убыванию . подскажите,пожалуйста

Код:
procedure TForm9.SgSort(aSg : TStringGrid; const aCol : Integer);
var
  SlSort, SlRow : TStringList;
  i, j : Integer;
begin
  SlSort := TStringList.Create;
  for i := aSg.FixedRows to aSg.RowCount - 1 do begin
       SlRow := TStringList.Create;
    SlRow.Assign(aSg.Rows[i]);
    SlSort.AddObject(aSg.Cells[aCol, i], SlRow);
  end;
  SlSort.Sort;
  j := 0;
  for i := aSg.FixedRows to aSg.RowCount - 1 do begin
        SlRow := Pointer(SlSort.Objects[j]);
      aSg.Rows[i].Assign(SlRow);
       SlRow.Free;
       Inc(j);
  end;
  SlSort.Free;
end;
Pilyla вне форума Ответить с цитированием
Старый 24.05.2013, 08:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Этот код никак.
Вот примеры других: http://delphiworld.narod.ru/_all_articles_.html - раздел Сортировка - [28]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2013, 08:43   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

TStringList позволяет указать функцию сравнения (пользовательскую) и сортировать по ней.

например, можно вставить такую функцию в код:
Код:
function StringListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
begin
  if List.Strings[Index1] = List.Strings[Index2] then Result := 0
  else
    if List.Strings[Index1] < List.Strings[Index2]
      then  Result :=  1
      else  Result :=  -1;
end;
а потом заменить вызов SlSort.Sort;
на вызов пользовательской сортировки:
Код:
    SlSort.CustomSort( @StringListCompareStrings );
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по убыванию. Valik_000 Помощь студентам 1 26.03.2013 12:20
Сортировка по убыванию kilogram SQL, базы данных 7 27.06.2012 20:59
Сортировка по убыванию Костя БД в Delphi 3 20.11.2007 08:37
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16