Инициализация массивов

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

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

Инициализация массивов

Сообщение Pasha-V » 28.03.2015 05:59:04

Доброго времени! :)

Не подскажите, почему компилятор FP не умеет определять массивы, а множества умеет?
Например, нельзя a := (5, 8, 2), но можно s := [5, 8, 2].
Pasha-V
новенький
 
Сообщения: 11
Зарегистрирован: 28.03.2015 04:30:52

Re: Инициализация массивов

Сообщение Mikhail » 28.03.2015 12:43:55

Pasha-V писал(а):Доброго времени! :)

Не подскажите, почему компилятор FP не умеет определять массивы, а множества умеет?
Например, нельзя a := (5, 8, 2), но можно s := [5, 8, 2].


Можно инициализировать глобальные переменные при объявлении
Код: Выделить всё
var a: array[0..3] of integer = (1, 2, 3, 4);


можно использовать конструктор открытого массива, например так
Код: Выделить всё
procedure test(const a:array of integer);
begin
end;


вызов
Код: Выделить всё
test([1, 2, 3, 4, 5])


Конструктора массива, как для множеств, увы, нет.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Инициализация массивов

Сообщение Pasha-V » 28.03.2015 18:35:37

Это я знаю. Можно сделать так — const a: array[0..3] of integer = (1, 2, 3, 4).
Но это же не константа и элементы можно изменить. А как сделать массив констант?
Pasha-V
новенький
 
Сообщения: 11
Зарегистрирован: 28.03.2015 04:30:52

Re: Инициализация массивов

Сообщение Mikhail » 28.03.2015 20:26:39

Pasha-V писал(а):Это я знаю. Можно сделать так — const a: array[0..3] of integer = (1, 2, 3, 4).
Но это же не константа и элементы можно изменить. А как сделать массив констант?

Нельзя их изменить, там от ключа компилятора, вроде как, поведение типизированных констант зависит.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Инициализация массивов

Сообщение bormant » 29.03.2015 17:28:31

Pasha-V писал(а):Но это же не константа и элементы можно изменить. А как сделать массив констант?

http://www.freepascal.org/docs-html/ref/refse10.html
Support for assigning values to typed constants is controlled by the {$J} directive: it can be switched off, but is on by default (for Turbo Pascal compatibility).
Аватара пользователя
bormant
постоялец
 
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru