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

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

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

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

Сообщение Azaza » 12.05.2016 21:15:11

Здравствуйте.
Я вывожу массив так:
stringgrid1.Cells[j+1,i]:=floattostr(a[i,j]);
Но в учебнике по lazarus написано:
stringgrid1.Cells[i,j]:=floattostr(a[i,j]);
Почему у меня не работает второй вариант?
Azaza
новенький
 
Сообщения: 13
Зарегистрирован: 27.09.2015 18:01:20

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

Сообщение Снег Север » 13.05.2016 04:11:53

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

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

Сообщение resident » 14.05.2016 00:39:18

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

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

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

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

И еще - если прибавляете 1, то и увеличивайте число колонок или строк, не знаю что вы там хотите, но тоже на единицу.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение Azaza » 15.05.2016 10:11:57

Код: Выделить всё
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]);
Azaza
новенький
 
Сообщения: 13
Зарегистрирован: 27.09.2015 18:01:20

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

Сообщение resident » 15.05.2016 18:53:53

Azaza писал(а):
Код: Выделить всё
val(inputbox('','',''),n);
val(inputbox('','',''),m);

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

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

Кхе, да как бы почти все программирование на том и строится, чтобы одно и тоже использовать для всего и вся.
Качайте сюда весь проект, потому что приведенный вами кусок "букв" вроде правильный.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

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

Сообщение Снег Север » 16.05.2016 07:20:39

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


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru