Консультация № 199778
05.12.2020, 15:54
0.00 руб.
1 1 1
Здравствуйте! Прошу помощи в следующем вопросе:
Delphi
Есть процедура сортировки StringGrid, которая сортирует значения по убыванию в заданном столбце.
Процедура не сортирует вообще.
При тестировании процедуры вводимые значения: таблица показанная на изображении и 7 столбец

Приложение:
procedure SortMin(Table:TStringGrid;Column:Integer);
var temp:array[1..7] of string;
a,b:double;
j,max,col,row,check:integer;

begin
for check:=1 to 7 do if Table.Cells[check,1] <> '' then
begin
for row:=1 to Table.RowCount-1 do
begin
max:=row;
for j:=row to Table.RowCount-1 do
begin
TryStrToFloat(Table.Cells[Column,j],a);
TryStrToFloat(Table.Cells[Column,max],b);
if a > b then max:=j;
end;
if row <> max then for col:=1 to 7 do
begin
temp[col]:=Table.Cells[col,row];
Table.Cells[col,row]:=Table.Cells[col,max];
Table.Cells[col,max]:=temp[col];
end;
end;
end;
end;
Прикрепленные файлы:
181b57da7d58b9bccbd89aebcdf66a44a3754838.png

Обсуждение

давно
Профессор
401888
1232
05.12.2020, 16:23
общий
это ответ
Здравствуйте, lov3nt!
Перестановка строк таблицы по убыванию злементов последнего столбца.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
s:string;
begin
with StringGrid1 do
for i:=fixedrows to rowcount-2 do
for j:=i to rowcount-1 do
if strtofloat(cells[colcount-1,i])<strtofloat(cells[colcount-1,j]) then
begin
s:=rows[i].Text;
rows[i].Assign(rows[j]);
rows[j].Text:=s;
end;
end;
Форма ответа