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

Вниз

Как создать 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1131280874
Вадя
2005-11-06 15:41
2005.12.04
asm & AMD64


14-1131712043
SPeller
2005-11-11 15:27
2005.12.04
Просто ради смеха


2-1131955451
nadirPP
2005-11-14 11:04
2005.12.04
AutoSelect


2-1132206933
markers
2005-11-17 08:55
2005.12.04
Рабочий стол


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





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