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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2014, 16:16   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А можно я коварно воспользуюсь моментом в целях собственной выгоды? Спасибо
Получается что
a : array of something; открытый
TMyArr = array of something;
a : TMyArr; уже динамический?

И еще :
Код:
procedure P(var a : array of string);
begin
	SetLength(a, 184)
end;
var
	a : array of string;
begin
	SetLength(a, 138);
	P(a)
end.
Почему в тушке программы компилятор ведет себя культурно, а в P начинает возмущаться?

Спасибо
Poma][a вне форума Ответить с цитированием
Старый 11.08.2014, 16:23   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure P(var a : array of string);  //открытый и только здесь может быть открытым
begin
	SetLength(a, 184)  //здесь будет ошибка
end;
var
	a : array of string;   //динамический и не капли не открытый, открытые только как параметры
begin
	SetLength(a, 138);
	P(a)
end.
SetLength создает массив в другом месте памяти, т.е. в указателе на массив меняется содержимое. Поэтому procedure P(var a : array of TMyArray) нормально и в него передается адрес указателя на массив. А описание с открытым массивом не позволяет изменить содержимое указателя на массив, поскольку там своя специфика передачи параметров
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.08.2014 в 16:29.
Аватар вне форума Ответить с цитированием
Старый 11.08.2014, 17:07   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Бинго! Дошло! Спасибо!
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лазарус SnS Помощь студентам 4 23.01.2014 00:15
Лазарус будущийпрограммист Помощь студентам 6 10.01.2014 23:11
Лазарус Ирина Андреевна Пс Помощь студентам 3 24.08.2013 11:24
Лазарус Simply-Art Qt и кроссплатформенное программирование С/С++ 15 03.04.2009 08:23