IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Возможности адских массивов.
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Можно ли сделать что-то такое?


Grid_Font : constant array (7 .. 40) of HFONT := (
others i => Create_Font ("Lucida Console", i + 4)
);



Пока что пришлось извращаться (по-моему, уродливо вышло).


Index : integer;

function Set_I(i: integer) return integer is
begin
Index := i;
return Index;
end;

function Get_I return integer is
begin
Index := Index + 1;
return Index;
end;

Grid_Font : constant array (7 .. 40) of HFONT := (
Create_Font ("Lucida Console", Set_I(7) + 4),
others => Create_Font ("Lucida Console", Get_I + 4)
);





Можно ли создавать многомерные массивы с компонентами разной длины?


type TPattern_Array is array (Positive range <>, Positive range <>) of boolean;

Patterns : constant TPAttern_Array := (
(true, true),
(true, false),
(true, true, true, false, false),
(true, true, true, false, false, false, true, false, false, false));



Не компилируется... Странно, почему так? Не вижу проблем с реализацией.
Или вручную эмулировать подобное, то есть создать несколько массивов разной длины, а потом создать массив указателей и на них указать?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
А запросы были?
Были. Еще до принятия A95, просили возможности сделать так:
E : constant Matrix(1 .. 5, 1 .. 5) := 
(for I in 1 .. 5 => (for J in 1 .. 5 => (if I = J then 1.0 else 0.0)));
, или хотя бы дать возможность определить в агрегате, какой именно элемент сейчас инициализируется, чтобы можно было использовать функции. Предложение было отклонено, формулировку не помню. С тех пор подобные предложения не возникали.

Цитата
А что же компилятор не предупредил?
Приоритет - у Стандарта. Компилятор не может обо всем знать. Даже если у тебя на машине оно нормально откомпилируется, и даже отработает - это еще не значит, что на другой машине оно отработает так же. Например, никто не запрещает компилятору сгенерировать код, который при наличии нескольких ядер (я уж не говорю о мультипроцессорных системах) будет инициализировать разные элементы массива разными ядрами (одновременно). Представляешь, что будет получено в твоем случае? Если же не выходить за рамки разрешенного в RM - то все нормально: какая бы разница, каким потоком или каким ядром инициализировано значение, если оно от внешних переменных не зависит?
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 9:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name