Содержание материала

 

Code:

type TStringGridExSortType = (srtAlpha,srtInteger,srtDouble);

 

procedure GridSort(SG : TStringGrid; ByColNumber,FromRow,ToRow : integer;

                  SortType : TStringGridExSortType = srtAlpha);

var Temp : TStringList;

 

   function SortStr(Line : string) : string;

   var RetVar : string;

   begin

     case SortType of

          srtAlpha   : Retvar := Line;

          srtInteger : Retvar := FormatFloat('000000000',StrToIntDef(trim(Line),0));

          srtDouble  : try

                         Retvar := FormatFloat('000000000.000000',StrToFloat(trim(Line)));

                       except

                         RetVar  := '0.00';

                       end;

     end;

 

     Result := RetVar;

   end;

 

   // Рекурсивный QuickSort

   procedure QuickSort(Lo,Hi : integer; CC : TStrings);

 

       procedure Sort(l,r: integer);

       var i,j : integer;

            x   : string;

       begin

         i := l; j := r;

         x := SortStr(CC[(l+r) DIV 2]);

         repeat

           while SortStr(CC[i]) < x do inc(i);

           while x < SortStr(CC[j]) do dec(j);

           if i <= j then begin

             Temp.Assign(SG.Rows[j]);      // Меняем местами 2 строки

             SG.Rows[j].Assign(SG.Rows[i]);

             SG.Rows[i].Assign(Temp);

             inc(i); dec(j);

           end;

         until i > j;

         if l < j then sort(l,j);

         if i < r then sort(i,r);

       end;

 

    begin {quicksort};

      Sort(Lo,Hi);

    end;

 

begin

Temp := TStringList.Create;

QuickSort(FromRow,ToRow,SG.Cols[ByColNumber]);

Temp.Free;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить