Показать сообщение отдельно
  #6  
Старый 02.06.2012, 18:58
gamezeldol gamezeldol вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
Радость

Цитата:
Сообщение от Kailon
А где в твоей примерной функции сортировки есть сравнение значений? Слышал что-нибудь о таком методе сортировке как сортировка пузырьком? Так вот здесь он вполне применим. В качестве пузырька у нас будет строка в StringGrid, которую мы специально добавим чтобы через нее менять значение строк местами.
Код:
procedure TFormGeneral.BtnSortingClick(Sender: TObject);
var
  I, J, CntRow, Val1, Val2: Integer;
begin
  StringGrid.RowCount := StringGrid.RowCount + 1;
  CntRow := StringGrid.RowCount;
  for J := 1 to CntRow - 1 do
  for I := 1 to CntRow - 1 do
    begin
      Val1 := StrToIntDef(StringGrid.Cells[1, I], 0);
      Val2 := StrToIntDef(StringGrid.Cells[1, J], 0);
      if Val1 < Val2 then
      with StringGrid do
      begin
        Rows[CntRow] := Rows[i];
        Rows[i] := Rows[J];
        Rows[J] := Rows[CntRow];
      end;
    end;
  StringGrid.RowCount := StringGrid.RowCount - 1;
end;

P.S.: в данном случае сортировка по убыванию. Чтобы получить сортировку по возрастанию нужно чуть-чуть доработать код. А что бы его доработать нужно понять что тут к чему. Учиться, учиться и еще раз учиться
Тооооооочно)) Вспомнил проходили мы такую сортировку))) Спасибо огромное) Просто Диплом делаю, в мозгах уже кипит все)))
Ответить с цитированием