Форум: "Начинающим";
Текущий архив: 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