![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
двумерный массив
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));