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

Вниз

Как создать N-мерный массив в рантайме.   Найти похожие ветки 

 
Still Swamp   (2005-11-11 17:35) [0]

Как создать N-мерный массив в рантайме?


 
Amoeba ©   (2005-11-11 17:40) [1]

Сделать это можно только если массив динамический.


 
mike-d ©   (2005-11-11 17:40) [2]

F1 - multidimensional dynamic arrays


 
begin...end ©   (2005-11-11 17:46) [3]

Размерность массива (статического или динамического) должна быть указана заранее.


 
Leonid Troyanovsky ©   (2005-11-11 17:52) [4]


> begin...end ©   (11.11.05 17:46) [3]
> Размерность массива (статического или динамического) должна
> быть указана заранее.


Пусть размерность массива будет M x M..
Нет, пожалуй, M - это многовато.
Итак, пусть размерность массива будет N x N..

--
Regards, LVT.


 
Amoeba ©   (2005-11-11 17:54) [5]


> begin...end ©   (11.11.05 17:46) [3]

Что следует понимать под

> Размерность массива (статического или динамического) должна
> быть указана заранее.

Со статическими то и ежу ясно, а причем здесь динамические? С каких это пор в коде размер дин.массива нельзя задать переменной, значение которой будет определено в в ходе выполнения программы?


 
begin...end ©   (2005-11-11 17:56) [6]

> Amoeba ©   (11.11.05 17:54) [5]

Под этим следует понимать, что размер и размерность -- не одно и то же.


 
vrem   (2005-11-11 17:58) [7]

Пусть динамический массив, но задаётся же -
a: array of array of array of integer; например,
количество "of array" нужно в дезигнтайме задавать,
компилятор ещё ругается если setlength не достаточное количество раз сделаешь...


 
Amoeba ©   (2005-11-11 17:59) [8]


> begin...end ©   (11.11.05 17:56) [6]

Sorry, просто невнимательно прочел ("обчитался" так сказать). Естественно, разницу между этими вещами знаю прекрасно.


 
Leonid Troyanovsky ©   (2005-11-11 18:08) [9]


> begin...end ©   (11.11.05 17:56) [6]
> > Amoeba ©   (11.11.05 17:54) [5]

> Под этим следует понимать, что размер и размерность -- не
> одно и то же.


Ну, это не так принципиально, бо, по-сути, компьютерные
массивы одномерны.

Или, если буквально отвечать на вопрос, то это VarArrayCreate.

--
Regards, LVT.


 
begin...end ©   (2005-11-11 18:14) [10]

> Leonid Troyanovsky ©   (11.11.05 18:08) [9]

Не знаю, принципиально это или нет. Можно, конечно, сделать указатель, выделять память и вручную вычислять смещения. Тогда и размер, и размерность можно будет задавать в run-time. И называть это массивом.

Но я подумал про массивы с точки зрения языка. Почему-то.

:-(


 
AlexWlad ©   (2005-11-11 19:56) [11]


> Still Swamp   (11.11.05 17:35)  
>
> Как создать N-мерный массив в рантайме?


Через TList - хоть до посинения... причем тип элементов массивов любой.


 
TUser ©   (2005-11-11 20:17) [12]

Если говорить о неизвестности размерности (а не размера) массива - то не надо вводить в заблюждение. Создать массив, если заранее не известно 2-х или 10-ти он мерный - низя. Надо создавать одномерный массив и писать код, который рассчитывает адрес в этом массиве.


 
Still Swamp   (2005-11-13 14:18) [13]

Я возможно излишене лаконично выразилс чем вызвал даже перенос темы в раздел начинающий.
Как изменить размер N мерного массива в рантайме.

Допустим я декларирую следующее:

PMyArra = ^TMyArray;
TMyArray: array [0..0,0..0] of integer;

MyArray:PMyArray;

GetMem(MyArray, Width*Height*SizeOf(Integer));

Вроде есть структура двухерная, отведена под нее память. Как обратиться к члену MyArra(i,j)?



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

Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.065 c
14-1131692903
Ega23
2005-11-11 10:08
2005.12.04
С днем рождения! 11 ноября


6-1124422105
pOLyMOrpH
2005-08-19 07:28
2005.12.04
Работа с сокетом


11-1096750056
Я(ты)
2004-10-03 00:47
2005.12.04
Использование Microsoft Speech API


14-1130861726
X9
2005-11-01 19:15
2005.12.04
Драйвер на Data-кабель


1-1130909161
snowkam
2005-11-02 08:26
2005.12.04
dll! как заставить работать незвестную процедуру или функцию?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский