константный "динамический" массив

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

константный "динамический" массив

Сообщение zub »

Чето не пойму как определить "динамический" массив в разделе const. Никак чтоли?
хочется:

Код: Выделить всё

a: array of string = ('aaa', 'bbb', 'ccc');

а приходится:

Код: Выделить всё

acount=3;
a: array [1..acount] of string = ('aaa', 'bbb', 'ccc');

Массив конечно совсем не динасический, просто хотелосьбы чтоб компилятор сам с количеством элементов определился
MageSlayer
постоялец
Сообщения: 216
Зарегистрирован: 07.09.2006 12:30:44

Сообщение MageSlayer »

Ну, динамический как статический - это не получится.
И с количеством элементов автоматически - тоже вроде никак.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

zub
Сами подумайте - константа не может быть динамической в принципе. У Вас и в объявлении видно, что массив статический, т.к. заранее известно кол-во элементов.
Вам просто хочется сократить количество написанных символов в коде? ;)
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Vadim
"Динамический" я не зря в кавычки взял, динамики в привычном понимании мне от него ненужно.
Мне нехочется ручками считать кол-во элементов и заводить вобщемто ненужную константу - компиляторы какраз и придуманы для такой работы))
Аватара пользователя
AlexVinS
новенький
Сообщения: 95
Зарегистрирован: 27.01.2009 00:18:01

Сообщение AlexVinS »

Увы в паскале это не поддерживается. Индексы (статического) массива могут быть любым диапазоном, не обязательно от нуля. Единственное что вам может помочь это Dynamic array constructors (2.7.1+)

Код: Выделить всё

type
  TArr = array of string;
var
  a:TArr;
begin
  a := TArr.Create('aaa', 'bbb', 'ccc');
end;
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

AlexVinS
>>Увы в паскале это не поддерживается
Я уже понял. Нагуглил беседу в списке рассылки http://www.hu.freepascal.org/lists/fpc- ... 23729.html с возможностью задания границ индексов (array [n..] of string или array [..n] of string), но дальше разговоров дело не пошло.
>>это Dynamic array constructors
Спасибо, но если уж делать в рантайме, то с чтением извне, чтоб менять это дело без перекомпиляции программы
Ответить