
03.05.2010, 18:51
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
А этот код тебе в принципе не подойдет, т.к. там исключать сложно, бо как используется готовый алгоритм сортировки. Либо менять код сборки/разборки строки. Проще свое написать.
Код:
procedure StringGridRowExchange(AStringGrid : TStringGrid; I1, I2 : Integer);
var
I : Integer;
S : String;
begin
For I := 0 To AStringGrid.Cols-1 Do
Begin
S := AStringGrid.Cells[I,I1];
AStringGrid.Cells[I,I1] := AStringGrid.Cells[I,I2];
AStringGrid.Cells[I,I2] := S;
End;
end;
procedure StringGridSort(AStringGrid : TStringGrid);
var
I, J : Interger;
S1, S2 : String;
begin
For I := 0 To AStringGrid.Rows-2 Do
For J := I+1 To AStringGrid.Rows-1 Do
Begin
S1 := AStringGrid.Cells[0,I];
S1 := Copy(S1,Pos(' ',S1)+1,Length(S1));
S2 := AStringGrid.Cells[0,J];
S2 := Copy(S2,Pos(' ',S2)+1,Length(S2));
// сравниваем без учета регистра, отрезав все до первого пробела.
If S1 > S2 Then
StringGridRowExchange(I,J);
End;
end;
|