Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

двумерный массив


Gu ©   (2011-08-20 16:16:00) 

никак не пойму как инициализировать 2й массив.
обычный так:

Var A1:Array[0..2] of byte=(1,2,3);

а как

Var A2:Array[0..2,0..2] of byte=(??????);


KilkennyCat   (2011-08-21 01:07:00) [1]


> DiamondShark ©   (20.08.11 23:16) [16]

ну. но его сделали.
а я сказал - не делают.


Германн   (2011-08-21 00:19:00) [2]


> Бред сивой кобылы

Бредить автор начал ещё раньше.

>  данные будут загружаться в самой проге, а надо в процедуре

На что был дан конкретный ответ

> а если бы твоя попытка инициализации в процедуре прошла
> то данные тогда не в проге, а в святом духе хранились?

Ну а если речь идет о не о массиве из 6 байт как в примере из [0], то и тут ответ был уже дан в [8].


DiamondShark   (2011-08-20 23:16:00) [3]


> точно. мост из чугуна не делают.

Педивикия протестуэ:
Третий мост — собственно Чугунный мост — был построек в 1835 инженером П. Я. Витте. Это был арочный мост из сборных чугунных конструкций с ездой понизу.
http://ru.wikipedia.org/wiki/Чугунный_мост_(Москва)


Kilkennycat   (2011-08-20 21:04:00) [4]

точно. мост из чугуна не делают.


Игорь Шевченко   (2011-08-20 20:17:00) [5]


> в винде вон намеки на оптимизауию вообще отсутствуют, вот
> из за таких копеек она терь весит как чугунный мост.


Бред сивой кобылы


Inovet   (2011-08-20 19:19:00) [6]

> [7] Gu   (20.08.11 18:46)
> в винде вон намеки на оптимизауию вообще отсутствуют

Откуда знаешь? Хорошо изучил устройство Виндоус?

Объявление const разместит массив в области данных, локально - на стеке - его бы пришлось инициализировать компилятору каждый раз при входе в функцию.


Kilkennycat   (2011-08-20 19:15:00) [7]

я уже с утра чешу репу, толку нету... не там чешу, или не ту репу?


sniknik   (2011-08-20 19:11:00) [8]

> еще как нить можно сделать?
можно посидеть и почесать репу на предмет, что есть данные и откуда они берутся.


sniknik   (2011-08-20 19:09:00) [9]

> но хочу чтобы только процедура с ним работала, а не вся прога его в памяти держала.
а если бы твоя попытка инициализации в процедуре прошла то данные тогда не в проге, а в святом духе хранились?
или в любом другом способе инициализации...


Омлет   (2011-08-20 18:50:00) [10]

> в винде вон намеки на оптимизауию вообще отсутствуют

Кхм.. Только в приличном обществе такую чушь не ляпните.


Омлет   (2011-08-20 18:48:00) [11]

Тогда храни свой массив в ресурсах или отдельном файле. В процедуре загружай и выгружай.


Gu   (2011-08-20 18:46:00) [12]

[5] - это тотже способ как в [1], данные будут загружаться в самой проге, а надо в процедуре. по поводу копеек, не согласен, в винде вон намеки на оптимизауию вообще отсутствуют, вот из за таких копеек она терь весит как чугунный мост.
еще как нить можно сделать?


Омлет   (2011-08-20 18:39:00) [13]

> но хочу чтобы только процедура с ним работала, а не вся прога его в памяти держала.

10 Кб - нынче копейки ))


Омлет   (2011-08-20 18:36:00) [14]

> Gu   (20.08.11 18:18) [2]

type
 T2DArray = array [0..2,0..2] of byte;

const
 myConst2D: T2DArray = ((0,0,0), (1,1,1), (2,2,2));

function My;
var
 myVar2D: T2DArray;
begin
 myVar2D := myConst2D;
 ...


Gu   (2011-08-20 18:35:00) [15]

Может как то не через массив надо? Короче есть небольшая матрица (100x100) с _известными_ числами типа byte. Как их загнать в переменную и обращаться к ним (if A2[x,y]=z then...)? Массив вроде оптимально подходит, но надо чтобы он был инициализирован (заполнен) только в процедуре, которая с ним работает. Заполнять вручную (A2[x,y]:=...) муторно, способ объявления в Interface подходит, но хочу чтобы только процедура с ним работала, а не вся прога его в памяти держала.


sniknik   (2011-08-20 18:30:00) [16]

> Cannot initialize local variables
перевожу - в локальной не катит. верь тому что пишет.
они находятся не в области данных программы, а в области стека. именно поэтому значения в локальных переменных не определены без инициализации.


Gu   (2011-08-20 18:18:00) [17]

спасибо.
Еще такой вопрос, как присвоить это в функции (заполнить объявленый массив вручную)?
Т.е. если я объявляю это в юните после Interface то все ок, а кагда пытаюсь это сделать в локальной процедуре, пишет Cannot initialize local variables.

Function My;
Var A2:Array[0..2,0..2] of byte=((0,0,0), (1,1,1), (2,2,2));
begin
..

Так тоже не катит:

Function My;
Var
A2:Array[0..2,0..2] of byte;
begin
..
A2:=((0,0,0), (1,1,1), (2,2,2));


Омлет   (2011-08-20 17:53:00) [18]

Var A2:Array[0..2,0..2] of byte=((0,0,0), (1,1,1), (2,2,2));


Наверх

Титульная страница Поиск, карта сайта Написать письмо