Другие языки программирования и технологии

delphi таблица

у мня вопрос по сортировке пузырьком таблице стринг грид в delphi 7
for i1:=1 to sg.rowcount-1 do а сдесь - 1
for i:=1 to sg.rowcount-2 do почему сдесь -2?
if strtoint(sg.Cells[1,i]) > strtoint(sg.Cells[1,i+1]) then
begin
label2.Caption:=sg.Cells[1,i];
sg.Cells[1,i]:=sg.Cells[1,i+1];
sg.Cells[1,i+1]:=label2.Caption;
Для этого нужно знать сам метод сортировки!
Прочти, к примеру, на Википедии
Adiz Xolov
Adiz Xolov
84 471
Лучший ответ
> потому всегда нужно брать от 0

Не болтай ерундой.
Стринггрид модет иметь фиксированные строки заголовков таблицы, которые не должны учавствовать в сортировке данных, потому как заголовки не относятся к данным.
KW
Kind Wizard
5 551
procedure Bubble(n: longint);
var b,t,j:longint;
r: string;
begin
b:=n; with form1.stringgrid1 do
while b<>0 do begin
t:=0;
for j:=1 to b-1 do if strtoint(cells[ 2,j ])>strtoint(cells[ 2,j+1 ])
then begin r:=cells[ 2,j+1 ]; cells[ 2,j+1 ]:=cells[ 2,j ];
cells[ 2,j ]:=r; t:=j; end ; b:=t; end;
end;
Вот процедура выполняющая сортировку пузырьковую. Можешь столбец любой взять, а не второй, как в процедуре описано.

SkYneT
>Быдло-код
Человеку 14 лет, может он вообще только-только этим делом занялся и ты от него ждешь идеального кода? Не можешь по делу помочь, вообще лучше не отвечай.
Vlad Ik
Vlad Ik
4 073
Быдло-код. Но все же, насколько мне известно, нумерация строк и столбцов в StringGrid идет с нуля, потому всегда нужно брать от 0 до количество_строк_или_столбцов - 1, а -2 у тебя потому, что в сортировке пузырьковой внешний цикл идет до количество_строк_или_столбцов - 1 минус 1. И я что-то не увидел тут сортировки пузырьком.

Так правильнее:

for i1 := 0 to sg.rowcount - 2 do
for i := 0 to sg.rowcount - i1 do
if strtoint(sg.Cells[i,i1]) > strtoint(sg.Cells[i,i1+1]) then
begin
label2.Caption := sg.Cells[i,i1]; // Вообще пздц оО. Отдельную переменную заведи стринговую, например, var buf: string;
sg.Cells[i,i1] := sg.Cells[i,i1+1];
sg.Cells[i,i1+1] := label2.Caption;
end;