Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
3-1267690972
DenProx
2010-03-04 11:22
2011.12.04
Loockup поле с помощью SQL


1-1276083003
Омлет
2010-06-09 15:30
2011.12.04
TDateTimePicker - ввод максимальной даты с клавиатуры


2-1313774122
Sega625
2011-08-19 21:15
2011.12.04
record в array of byte


4-1252659169
istok20
2009-09-11 12:52
2011.12.04
получить session id из process id..


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский