![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как двумерному массиву присвоить элементы одномерного? [D7, XP]
smman © (2010-04-14 10:20:00)Как двумерному массиву присвоить элементы одномерного?
smman (2010-04-14 11:45:00) [1]Удалено модератором
Примечание: Второй вопрос здесь не обсуждаем, было же сказано модератором
12 (2010-04-14 11:39:00) [2]
> почему как копия такой вариант не подходит?
если нужна копия массива - то не подходит absolute.
абсолют - это когда второй указатель указывает на то же самое место в памяти, что и первый.
Изменится a[x] - изменится и b[n,m].
> какой компонент лучше всего использовать для вывода двумерного
> массива
MyStringGrid ^)
перегрузи метод
smman (2010-04-14 11:34:00) [3]Удалено модератором
Примечание: Один вопрос одна тема.
smman (2010-04-14 11:16:00) [4]
> но не если нужна копия
почему как копия такой вариант не подходит?
12 (2010-04-14 11:14:00) [5]
> absolute a", штука, конечно, прикольная
если нужно представить одно как другое
но не если нужна копия
smman (2010-04-14 11:08:00) [6]Все получилось, всем спасибо за помощь!
Но блин, "absolute a", штука, конечно, прикольная :)
Anatoly Podgoretsky (2010-04-14 11:06:00) [7]> smman (14.04.2010 11:02:24) [24]
Сначала изменяешь индекс по колонкам, а потом, если надо больше одной строки, то далее по строками.
oxffff (2010-04-14 11:05:00) [8]
> А как тогда можно сделать заполнение по строкам, а не по
> стоблцам?
Вместо
stringgrid1.Cells[ m,n]:=IntToStr(b[m,n]);
написать
stringgrid1.Cells[ n,m]:=IntToStr(b[m,n]);
smman (2010-04-14 11:02:00) [9]
> Каким образом, уже второй раз спрашиваю.
слева направо :)
smman (2010-04-14 11:01:00) [10]
> A и B будут делить одну и ту же память. При изменении A
> изменится B и наоборот.
Спасибо.
> Менять не нужно. Нужно именно b[1,c]. Если будет [c,1],
> то может быть очень плохо.
А как тогда можно сделать заполнение по строкам, а не по стоблцам?
Anatoly Podgoretsky (2010-04-14 11:01:00) [11]
> В b нужно записать содержимое a
Каким образом, уже второй раз спрашиваю.
Anatoly Podgoretsky (2010-04-14 11:00:00) [12]Я всегда говорил, что нам не хватает еще одной конференции.
oxffff (2010-04-14 10:58:00) [13]
>
> он так правильно только по столбцам заполнится, а если поменять
> местами b[c,1] и вывести в stringgrid, то получится что
> будет заполнена только первая строка, а остальные значения
> будут нулевые
Менять не нужно. Нужно именно b[1,c]. Если будет [c,1], то может быть очень плохо.
И. Павел (2010-04-14 10:57:00) [14]> Объясните пожалуйста, что такое absolute a и как это работает?
A и B будут делить одну и ту же память. При изменении A изменится B и наоборот.
smman (2010-04-14 10:54:00) [15]
> procedure TForm4.FormCreate(Sender: TObject);
> var a: array[1..16] of integer;
> b: array [1..4, 1..4] of integer;
> c:integer;
> begin
> for c:=1 to 16 do
> begin
> a[c]:=c;
> b[1,c]:=a[c];
> end;
> for c in b do Memo1.Lines.Add(inttostr(c));
> end;
>
> ??
он так правильно только по столбцам заполнится, а если поменять местами b[c,1] и вывести в stringgrid, то получится что будет заполнена только первая строка, а остальные значения будут нулевые.
for m:=1 to 4 do
for n:=1 to 4 do
stringgrid1.Cells[m,n]:=IntToStr(b[m,n]);
12 (2010-04-14 10:51:00) [16]b[i,j]:=a[i*4 + j];
oxffff (2010-04-14 10:51:00) [17]
> И. Павел © (14.04.10 10:46) [13]
:)
smman (2010-04-14 10:49:00) [18]
> b: array [1..4, 1..4] of integer absolute a;
Объясните пожалуйста, что такое absolute a и как это работает?
oxffff (2010-04-14 10:49:00) [19]
> smman (14.04.10 10:38) [10]
>
> > Вместо 0 видимо поставить 1 надо. И поменять местами.
>
> если поменять местами то двумерный массив не корректно заполняется
procedure TForm4.FormCreate(Sender: TObject);
var a: array[1..16] of integer;
b: array [1..4, 1..4] of integer;
c:integer;
begin
for c:=1 to 16 do
begin
a[c]:=c;
b[1,c]:=a[c];
end;
for c in b do Memo1.Lines.Add(inttostr(c));
end;
??
И. Павел (2010-04-14 10:46:00) [20]a: array[1..16] of integer;
b: array [1..4, 1..4] of integer absolute a;