Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.04;
Скачать: CL | DM;

Вниз

двумерный массив   Найти похожие ветки 

 
Gu   (2011-08-20 16:16) [0]

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

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

а как

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


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

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


 
Gu   (2011-08-20 18:18) [2]

спасибо.
Еще такой вопрос, как присвоить это в функции (заполнить объявленый массив вручную)?
Т.е. если я объявляю это в юните после 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));


 
sniknik ©   (2011-08-20 18:30) [3]

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


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

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


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

> 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;
 ...


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

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

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


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

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


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

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


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

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

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


 
sniknik ©   (2011-08-20 19:09) [10]

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


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

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


 
Kilkennycat ©   (2011-08-20 19:15) [12]

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


 
Inovet ©   (2011-08-20 19:19) [13]

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

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

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


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


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


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


 
Kilkennycat ©   (2011-08-20 21:04) [15]

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


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


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

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


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


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

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

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

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

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

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


 
KilkennyCat ©   (2011-08-21 01:07) [18]


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

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



Страницы: 1 вся ветка

Текущий архив: 2011.12.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1313206942
Gu
2011-08-13 07:42
2011.12.04
Запуск от имени администратора


2-1313605104
armstrong
2011-08-17 22:18
2011.12.04
ADO отбор по диапазону дат


1-1274783463
Deltas
2010-05-25 14:31
2011.12.04
Анимация сворачивания окна


2-1312987253
kalten
2011-08-10 18:40
2011.12.04
назначение горячих клавиш


15-1312835391
Юрий
2011-08-09 00:29
2011.12.04
С днем рождения ! 9 августа 2011 вторник