Сама программа находится во вложенном файле.
Button1 - Произвольный набор чисел, Button2 - Сортировка 2ого столбца по убыванию. Вопрос в том чтобы сортировка начиналась со второй строки. Чтобы 1ая строка вообще не задействовалась в этой операции. Т.к. cell[1,0] должна быть типа String. Спасибо за помощь
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
a=array [1..5] of integer;
m=array [1..5] of a;
const
n=5;
var
Form1: TForm1;
mas:m;
implementation
{$R *.dfm}
procedure refreshtable;
var
i,j:byte;
begin
for I := 1 to n do
for j := 1 to n do
form1.StringGrid1.Cells[j-1,i-1]:=inttostr(mas[i,j]); // тут укажи свою форму
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:byte;
s:integer;
begin
for I := 1 to n do begin
s:=0;
for j := 1 to n do begin
mas[i,j]:=Random(100);
s:=s+mas[i,j];
end;
StringGrid1.Cells[5,i-1]:=inttostr(s);
end;
refreshtable;
end;
function mySort(List: TStringList; first, second: Integer): Integer; // это функция сортировки
function f(index: integer): integer;
begin result := StrToInt(List.Strings[index]) end;
begin
result := f(second) - f(first)
end;
procedure TForm1.Button2Click(Sender: TObject);
var
ts: TStringList;
i,j: integer;
begin
ts := TStringList.Create;
try
with StringGrid1 do
begin
ts.Assign(cols[1]); // Получаем элементы очередной строки
ts.CustomSort(mySort); // сортируем их как числа по убыванию
cols[1].Assign(ts); // возвращаем назад в Грид
end;
finally
ts.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
end.
Админ: Пользуемся тегами для оформления кода, иначе последуют санкции!