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

> Внимание!

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

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

 
 Ответить  Открыть новую тему 
> GNAT 2011, баг среды, expression functions
сообщение
Сообщение #1


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

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

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


Фича очень полезная, сильно сокращает кол-во кода в мелких функциях, но среда не научилась её поддерживать.

Есть такой код


function Length (v: TPoint) return f80 is (sqrt(v.x*v.x + v.y*v.y + v.z*v.z));
function "+" (v1,v2: TPoint) return TPoint is (v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
function "-" (v1,v2: TPoint) return TPoint is (v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
function "*" (v1,v2: TPoint) return f80 is (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z);
function "*" (v: TPoint; a: f80) return TPoint is (v.x*a, v.y*a, v.z*a);
function "*" (a: f80; v: TPoint) return TPoint is (a*v.x, a*v.y, a*v.z);
function "/" (v: TPoint; a: f80) return TPoint is (v * (1.0/a));
function Normalize (v: TPoint) return TPoint is (v/Length(v));
function "**" (v1,v2: TPoint) return TPoint is (v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x);
function To_String (v: TPoint) return String is (f80'Image(v.x) & " , " & f80'Image(v.y) & " , " & f80'Image(v.z));


Выделяем, нажимаем CTRL+TAB... И видим лесенку.
То есть форматировать только руками.
Ещё мне пришлось убрать подсветку блока, потому что среда считает expression function не блоком, а только началом блока.
Ну и автоотступы пришлось включить упрощённые.
Лечится ли это какой-то галочкой в среде?

Ну и ещё по мелочи - включить режим Ada2012 при помощи галочек я не смог, только вручную дописав параметр в строку вызова компилятора.

Ну и ещё я опять забыл, какая комбинация 20 галочек на 5 вкладках должна быть выставлена для работы отладчика. Как вы работаете вообще с такой средой? Или вы заранее пишете несколько нужных вам профилей (типа "отладка" и "релиз"), в каждом из которых один раз указываете все опции. А при компиляции просто выбираете готовый профиль.

[offtop]
Понравилась фича с if, возвращающим значение, осталось только ввести цикл, возвращающий значение (я не знаю, как), тогда я смогу наконец добраться до идеала - когда вся логика написана в разделе описаний, а тело функции состоит из единственного return.
[/offtop]


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Цитата
Лечится ли это какой-то галочкой в среде?
В текущей версии - нет. В новой (которая выйдет, когда Стандарт окончательно примут) это уже пофиксили (изменения внесены в GPS в начале февраля 2011 года, а текущая сборка - от 13 января).

Цитата
Ну и ещё по мелочи - включить режим Ada2012 при помощи галочек я не смог, только вручную дописав параметр в строку вызова компилятора.
И это будет пофикшено, когда будет сам Стандарт. Кстати, для этого и существует возможность добавлять ключи прямо в строку. Вот в Дельфи/Билдере мне этой возможности не хватает, приходится лазить по разным вкладкам, и переключать галочки. А тут - при комбинированной работе галочек/текстбокса - все гораздо проще...

Цитата
Или вы заранее пишете несколько нужных вам профилей (типа "отладка" и "релиз"), в каждом из которых один раз указываете все опции. А при компиляции просто выбираете готовый профиль.
Угу, примерно так. В файл проекта (.GPR) добавляется переменная, указывающая тип сборки, и в зависимости от нее - ключи компилятора (которые как раз и берутся из того текстбокса, куда ты впечатывал -gnat12), библиотекаря, линкера... Чтобы переключиться на другой тип - достаточно просто поменять значение переменной и полностью пересобрать проект.

Но на самом деле - чтобы работала отладка нужно на вкладках Gnatmake и Ada включить галочки "Debug Information", а на вкладке Ada Linker выключить "Strip symbols"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Цитата(TarasBer @ 1.12.2011 11:54) *
Выделяем, нажимаем CTRL+TAB... И видим лесенку.
То есть форматировать только руками.
Пофикшено в новой версии GNAT GPL 2012
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


Это хорошо.
А кросскомпилятор под Андроид из-под винды ещё не портировали?
И желательно, которое не будет требовать вручную заполнять манифесты и мк-файлы кучей строчек для каждого нового проекта.

А то единственное доступное средство для написания под Андроид на коренном языке - это крестоплагин для эклипса, сам эклипс без мата описать невозможно. Уж хоть я и считаю, что ГНАТ немного не для людей (по сравнению с платными программами типа Дельфи или Студии), но эклипс бьёт все рекорды неадекватности...

Сообщение отредактировано: TarasBer -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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