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

> Внимание!

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

> Настройка GPS (IDE для Ады), (разделено)
-TarasBer-
сообщение 18.01.2011 21:40
Сообщение #1


Гость






Скачал я себе ГНАТ (Gnat GPL(без исходников, поленился все ссылки тыкать) и Win32Ada.
Скопировал я для начала в редактор кода текст из Википедии:

with Ada.Text_IO;

procedure Hello is
use Ada.Text_IO;
begin
Put_Line("Hello, world!");
end Hello.


Нажимаю "проверка синтаксиса".
[2011-01-18 21:32:02] Could not determine the project for file: C:\ADA\projects\Test\test.gpr
[2011-01-18 21:32:02] Invalid context, cannot build

В общем, я так понял, я пока с какими-то настройками не разобрался, что делать?
Заметил, что можно копировать сообщения об ошибках в буфер обмена.
Ещё, что функцию можно свернуть. После каждого сворачивания/разворачивания в конец добавляется пустая строчка (баг, есть таблетка?).
В настройках цвета не нашёл отдельного цвета для символов. Мне нравится, когда скобочки и запятые коричневые, а не чёрные.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 7.02.2011 18:34
Сообщение #2


Гость






Цитата
Так вот, если внутри P кинуть исключение, то значение переменной PF.T, передаваемой внутрь процедуры, останется старым
Во-первых, внутрь процедуры ничего не передается. out параметр - это ожидание, что процедура заполнит и передаст назад какое-то значение. Так что даже если ты инициализируешь чем-то PF.T перед тем, как вызвать процедуру, при выбросе исключения в PF.T все равно будет null. А во-вторых, такое поведение компилятора прописано в Стандарте языка:

Цитата(Ada RM 6.4.1)
After normal completion and leaving of a subprogram, for each in out or out parameter that is passed by copy, the value of the formal parameter is converted to the subtype of the variable given as the actual parameter and assigned to it. These conversions and assignments occur in an arbitrary order.
Согласно пункту 6.2 ссылочный тип - это тип, передающийся "by copy", а выброс исключения не может считаться "нормальным завершением программы"

Вывод: не передавать через out-параметры ссылочных (или любых других передающихся "by copy" типов), если подпрограмма может выбросить исключение. Как WorkAround (в твоем случае) - ловить в той же процедуре свое же исключение, освобождать память, и raise-ом отправлять дальше...

P.S. Отделил от темы кусок, связанный с поиском утечек, в отдельную тему...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-TarasBer-   Настройка GPS (IDE для Ады)   18.01.2011 21:40
volvo   У меня на домашней GNAT GPL 2009 такого нет. На ра...   18.01.2011 22:45
volvo   Аааа.... Вот это: - фича такая. Если при разворачи...   19.01.2011 0:43
-TarasBer-   Мда, название, как оказалось, у языка очень неудоб...   19.01.2011 21:16
volvo   Можно. Добавляй в запрос что-либо из ключевых слов...   19.01.2011 23:55
volvo   Вот знаешь, за что я люблю этот язык? :) Понадобил...   20.01.2011 10:34
TarasBer   > берешь и переопределяешь операцию деления: В...   20.01.2011 14:46
volvo   Надежность ни разу не страдает. Скорее наоборот. П...   20.01.2011 15:07
TarasBer   Кстати, а как обстоит дело с размером получаемых ф...   20.01.2011 19:52
volvo   Ну, почему 400? Если переключить режим с Debug на ...   20.01.2011 20:27
-TarasBer-   Возникли вопросы по использованию отладчика. Если ...   21.01.2011 15:42
volvo   У Гаввы не описываются строки переменной длины, по...   21.01.2011 17:11
TarasBer   > У Гаввы не описываются строки переменной длин...   21.01.2011 17:22
volvo   Ты вот это имеешь в виду, что-ли: procedure Main ...   21.01.2011 17:43
TarasBer   Всё нормально отработало. А в чём секрет фокуса? Е...   21.01.2011 18:16
volvo   Для Controlled-типов есть процедура Adjust, с опер...   21.01.2011 18:56
TarasBer   > Для Controlled-типов есть процедура Adjust И...   21.01.2011 21:23
volvo   Да, она неявно вызывается, как только объект контр...   21.01.2011 22:05
TarasBer   Ух ты, тут можно хранить автоматические объекты в ...   21.01.2011 22:47
volvo   Хитрый, да? Хочешь чтоб и is (<>) и is delta...   21.01.2011 23:49
TarasBer   > Хитрый, да? Нет, просто со сложившимся мнени...   22.01.2011 14:19
volvo   Я тебе больше скажу, можно даже сделать так: fu...   22.01.2011 14:27
TarasBer   То есть при инициализации шаблона можно не только ...   22.01.2011 15:22
TarasBer   Среда ругается, когда видит в коде русские символы...   25.01.2011 20:35
volvo   Чтоб среда не ругалась на кириллицу, я себе перекл...   25.01.2011 21:16
TarasBer   > Где именно ты пытаешься описывать KeyArr? Вну...   25.01.2011 21:35
volvo   Открой GPR-файл своего проекта (можешь просто текс...   25.01.2011 22:04
Гость   Покорение отладчика пока не удалось. No symbol tab...   26.01.2011 11:41
-TarasBer-   А, не, это опять что-то среда запускает только ста...   26.01.2011 11:48
TarasBer   И кстати, почему C:\Program Files\ADA...   26.01.2011 11:53
volvo   Странно. Посмотрел сейчас на новом проекте. Если в...   26.01.2011 14:05
TarasBer   > Gnatmake -> (галка установлена)"Debug...   26.01.2011 14:14
volvo   Панель с картинками - это ToolBar, там есть комбоб...   26.01.2011 14:17
TarasBer   (как-то комбобоксы странно выглядят). Да, теперь ...   26.01.2011 14:35
volvo   Это поля для типа Simple_List_Controller, который ...   26.01.2011 16:08
TarasBer   О, я сумел запустить отладчик. Понравилось, что ще...   26.01.2011 16:35
volvo   Вот чего нет - того нет. По крайней мере в GPL-вер...   26.01.2011 18:26
TarasBer   Теперь мне понадобилось обойти излишне жёсткий кон...   27.01.2011 12:50
volvo   Ну, во-первых, Ада - это не Дельфи, для того чтоб ...   27.01.2011 14:00
TarasBer   > procedure EnumNodes(D: Dictionary; ...   27.01.2011 14:21
volvo   Пишется функция, возвращающая определенное значени...   27.01.2011 14:42
TarasBer   > Если ты предварительно опишешь тип, а потом б...   27.01.2011 14:59
volvo   Нет, не будет. Вот это, кстати, тот случай, когда ...   27.01.2011 15:49
TarasBer   Ещё вопрос - есть ли тут аналог паскалевского with...   27.01.2011 17:10
volvo   Нет, он здесь на фиг не нужен. При наличии возможн...   27.01.2011 18:45
-TarasBer-   Посмотрел я Container.Vector. Не нашёл двух функци...   28.01.2011 17:29
TarasBer   Новая проблема. Я обнаружил утечку памяти у себя. ...   7.02.2011 17:18
volvo   Во-первых, внутрь процедуры ничего не передается. ...   7.02.2011 18:34
-TarasBer-   Ну допустим, в моём случае, я разберусь как-то, чт...   7.02.2011 18:55
volvo   По-моему, у кого-то неправильное понимание сущност...   7.02.2011 21:39
-TarasBer-   Да я вообще исключениями впервые в жизни решил вос...   7.02.2011 22:20
TarasBer   У меня почему-то стало пропадать окно с переменным...   28.02.2011 12:30
volvo   Странно... Вот тут я записал небольшое видео, пре...   28.02.2011 13:18
TarasBer   > Вот тут я записал небольшое видео Дома посмо...   28.02.2011 13:35
volvo   Ну, я и говорю:   28.02.2011 14:33
TarasBer   Ещё проблема. Большую часть времени написания ко...   5.04.2011 11:53
volvo   Что я не так делаю?   5.04.2011 12:14
TarasBer   > Что я не так делаю? Используешь старую верси...   5.04.2011 12:22
volvo   Не знаю, мне не с чем сравнивать. Я 2010 под Windo...   5.04.2011 12:46


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

 



- Текстовая версия 25.06.2025 1:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"