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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
Azaza
новенький
Сообщения: 13
Зарегистрирован: 27.09.2015 17:01:20

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

Сообщение Azaza »

Здравствуйте.
Я вывожу массив так:
stringgrid1.Cells[j+1,i]:=floattostr(a[i,j]);
Но в учебнике по lazarus написано:
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);
Почему у меня не работает второй вариант?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3069
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Очень содержательный вопрос... :D
Помедитировав над своим хрустальным шаром, могу предположить, что в вашем stringgrid1 есть фиксированный столбец, от того данные приходится сдвигать на единицу.
А на будущее, для получения ответа, желательно прилагать текст программы с проблемой.
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Снег Север писал(а):от того данные приходится сдвигать на единицу

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

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

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

И еще - если прибавляете 1, то и увеличивайте число колонок или строк, не знаю что вы там хотите, но тоже на единицу.
Azaza
новенький
Сообщения: 13
Зарегистрирован: 27.09.2015 17:01:20

Сообщение 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]);
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Azaza писал(а):

Код: Выделить всё

val(inputbox('','',''),n);
val(inputbox('','',''),m);

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

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

Кхе, да как бы почти все программирование на том и строится, чтобы одно и тоже использовать для всего и вся.
Качайте сюда весь проект, потому что приведенный вами кусок "букв" вроде правильный.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3069
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

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