Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2007, 11:15   #1
amandra
Пользователь
 
Регистрация: 12.10.2007
Сообщений: 19
По умолчанию двумерный динамический массив

Как создать двумерный динамический массив?
amandra вне форума Ответить с цитированием
Старый 23.10.2007, 11:21   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

var
massiv: array of array of integer
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 23.10.2007, 11:27   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
//Объявляешь массив
var
  M: array of array of real;
//..........................
//Выделяешь для него память
SetLength(M,5,5);
//Получается массив [0..4,0..4], индексация всегда с 0
//Работаешь с массивом как обычно
M[2,3]:=2.18;
//...........................
//Освободить память
M:=NIL;

Последний раз редактировалось _Dmitry; 23.10.2007 в 11:29.
_Dmitry вне форума Ответить с цитированием
Старый 23.10.2007, 11:51   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

В отличии от статического массива, который всегда прямоугольный, размерность динамического массива может быть сложной. Тогда выделять память нужно следующим образом:
SetLength(M,5);
SetLength(M[0],4);
SetLength(M[1],1);
SetLength(M[2],3);
SetLength(M[3],2);
SetLength(M[4],5);
В результате массив будет следующим:
* * * *
*
* * *
* *
* * * * *
Например, элемента M[1,1] не существует (индексация с 0!!!).
_Dmitry вне форума Ответить с цитированием
Старый 23.10.2007, 12:56   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

выглядит устрашающе
пыщь
JTG вне форума Ответить с цитированием
Старый 23.10.2007, 19:24   #6
Роман777
 
Регистрация: 21.10.2007
Сообщений: 8
По умолчанию

А обязательно добавлять "M:=NIL;"?
Роман777 вне форума Ответить с цитированием
Старый 23.10.2007, 21:01   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Можно не добавлять, память освобождается автоматически, как при завершении программы, так и при выполнении SetLength при задании новых размеров
_Dmitry вне форума Ответить с цитированием
Старый 24.10.2009, 14:38   #8
Gypsy
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 42
По умолчанию

А в процедуре не получилось объявить двумерный дин. массив.
пишу вот так:
procedure ReadFile(filename: string; var data: array of array of string);
ругается(
Gypsy вне форума Ответить с цитированием
Старый 24.10.2009, 14:42   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

объявить можно, но изменять его не выйдет.
можно сделать как и с обычными(читай одномерными массивами)
через типизацию
type Mas=array of array of integer;
так и можно попробывать через указатели.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.10.2009, 14:58   #10
Gypsy
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
объявить можно, но изменять его не выйдет.
можно сделать как и с обычными(читай одномерными массивами)
через типизацию
type Mas=array of array of integer;
так и можно попробывать через указатели.
Спасибо, сделал, работает.
Gypsy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный Массив n01R Помощь студентам 9 19.12.2009 16:41
Двумерный массив... slim5 Помощь студентам 2 20.06.2008 23:16
Двумерный массив в С++ Draid Помощь студентам 2 07.03.2008 22:06
Двумерный массив Jodu Помощь студентам 18 05.12.2007 22:44