Страница 1 из 1

Вывод двумерного массива в stringgrid

СообщениеДобавлено: 12.05.2016 21:15:11
Azaza
Здравствуйте.
Я вывожу массив так:
stringgrid1.Cells[j+1,i]:=floattostr(a[i,j]);
Но в учебнике по lazarus написано:
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);
Почему у меня не работает второй вариант?

Re: Вывод двумерного массива в stringgrid

СообщениеДобавлено: 13.05.2016 04:11:53
Снег Север
Очень содержательный вопрос... :D
Помедитировав над своим хрустальным шаром, могу предположить, что в вашем stringgrid1 есть фиксированный столбец, от того данные приходится сдвигать на единицу.
А на будущее, для получения ответа, желательно прилагать текст программы с проблемой.

Re: Вывод двумерного массива в stringgrid

СообщениеДобавлено: 14.05.2016 00:39:18
resident
Снег Север писал(а):от того данные приходится сдвигать на единицу

Я тоже сначала так подумал, но там кроме того индексы поменяли местами. :)

Добавлено спустя 4 минуты 23 секунды:
Azaza писал(а):Почему у меня не работает второй вариант?

Потому шта в примере индексы везде идут сначала i, а потом j. У вас же сначала j, а вправа как в примере i.
Azaza писал(а):stringgrid1.Cells[j+1,i]:=floattostr(a[i,j]);

И еще - если прибавляете 1, то и увеличивайте число колонок или строк, не знаю что вы там хотите, но тоже на единицу.

Re: Вывод двумерного массива в stringgrid

СообщениеДобавлено: 15.05.2016 10:11:57
Azaza
Код: Выделить всё
var a: array of array of real;
   i,j,m,n:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
val(inputbox('','',''),n);
val(inputbox('','',''),m);
setlength(a,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m+1;
for i:=0 to n-1 do
for j:=0 to m-1 do begin
   a[i,j]:=random(20);
   stringgrid1.Cells[j+1,i]:=floattostr(a[i,j]);
end;   

Это мой код.
В a[i,j] i-строки, j-колонки; В cells наоборот.
Как удаётся использовать одни и те же буквы для разных параметров?
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);

Re: Вывод двумерного массива в stringgrid

СообщениеДобавлено: 15.05.2016 18:53:53
resident
Azaza писал(а):
Код: Выделить всё
val(inputbox('','',''),n);
val(inputbox('','',''),m);

Это что? Инициализация n/m?

Azaza писал(а):Как удаётся использовать одни и те же буквы для разных параметров?

Кхе, да как бы почти все программирование на том и строится, чтобы одно и тоже использовать для всего и вся.
Качайте сюда весь проект, потому что приведенный вами кусок "букв" вроде правильный.

Re: Вывод двумерного массива в stringgrid

СообщениеДобавлено: 16.05.2016 07:20:39
Снег Север
Azaza писал(а):Как удаётся использовать одни и те же буквы для разных параметров?
Что значит "разных"? Должны совпадать тип параметра и подставляемой переменной, а какой буквой вы их обозначите не имеет значения.
Есть традиция, идущая еще от древнего фортрана, переменным целого типа давать названия из набора i,j,k,l,m,n или начинающиеся на эти буквы, но это не обязательно.