Главная страница
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.49 MB
Время: 0.026 c
6-1124210545
Doplhin1
2005-08-16 20:42
2005.12.04
Chat


3-1129697892
Liavik
2005-10-19 08:58
2005.12.04
longtime в accsess &delphi


2-1132403254
Oni
2005-11-19 15:27
2005.12.04
Перевести значение из BCD в integer


3-1129634534
СергейГР
2005-10-18 15:22
2005.12.04
_небольшая_ база данных


3-1129813360
alexliv
2005-10-20 17:02
2005.12.04
group by через парметры