Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический массив [D6, Win2k]


Linder ©   (2002-11-14 13:53:00) 

Всем привет!

Уважаемые Мастера, подскажите, плиз.

Динамический массив описывается так:
var mas1: array of byte;

Устанавливаем длину массива так:
SetLength(mas1, 10);

В этом случае мы получим одномерный массив.
А как описать двухмерный массив? (на-пример: mas2[3,5])
И как устанавливать его длину по разным измерениям?


Kibitzer   (2002-11-14 17:53:00) [1]


> Marcus (14.11.02 14:01)
> type TByteArray = array of byte;
>
> var
> A: array of TByteArray;
>
> SetLength(A, 10);
> for i := 0 to High(A) do
> SetLength(A[i], 15);
>
> получишь массив 10х15

Слишком много всего для создания "прямоугольного" массива достаточно сделать так как предложил Misha.
Если нужен "непрямоугольный" массив, тогда другое дело.

Пример "треугольного" массива:

...
var
A: array of array ofByte;
i: Integer;
begin
SetLength(A, 15);
fori := 0 to14 doSetLength(A[i], i+1);

...


Alx2   (2002-11-14 14:08:00) [2]

>Linder (14.11.02 14:06)
Я дал два варианта. Один из них без секса 8)


Linder   (2002-11-14 14:06:00) [3]

>Alx2
Слишком много секса...
Ты бы еще предложил Интегралы использовать. :))

>Marcus
Спасибо, сейчас попробую.


Marcus   (2002-11-14 14:01:00) [4]

type TByteArray = array of byte;

var
A: array of TByteArray;

SetLength(A, 10);
for i := 0 to High(A) do
SetLength(A[i], 15);

получишь массив 10х15


Misha   (2002-11-14 13:59:00) [5]

попробуй array of array of byte

SetLength(a,10,10)


Внук   (2002-11-14 13:59:00) [6]

var mas2: array of array byte;

SetLength(mas2, 3);
SetLength(mas2[0], 5);
SetLength(mas2[1], 5);
SetLength(mas2[2], 5);




Alx2   (2002-11-14 13:59:00) [7]

>Linder (14.11.02 13:53)
array of array of byte - массив массивов переменной длины.
Если хочешь сохранить жесткую структуру MxN используй одномерный массив длины m*n и проецируй его индекс на декартово произведение [1..m]x[1..n] 8-)
таким образом инекс [a,b] превратится в линейный индекс (a-1)*n+b-1 (если индексы считать от единицы)


Наверх

Титульная страница Поиск, карта сайта Написать письмо