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

> Внимание!

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

> Заголовки Windows, Ada
TarasBer
сообщение 8.02.2011 16:28
Сообщение #1


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

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

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


Я поставил пакет win32ada, он создал папку include\win32ada
Если написать первой строкой test.gpr with "win32ada", то среда ругается при открытии пакета:

[2011-02-08 16:25:57] C:\Program Files\ADA\projects\TEST\test.gpr:1:06: unknown project file: "win32ada"
[2011-02-08 16:25:57] Error while loading project 'C:\Program Files\ADA\projects\TEST\test.gpr'. Loading the default project.

Ну я это убрал.
Добавил в test.gpr строчку

for Source_Dirs use ("..\..\include\win32ada\**");

Пишу в test.adb with win32.winuser (вроде все основные функции, типа окно нарисовать итд, там).
Компилирую.

gnatlink "C:\Program Files\ADA\projects\TEST\test.ali" -shared-libgcc -g -g -fprofile-generate -o "C:\Program Files\ADA\projects\TEST\test.exe"
c:/program files/ada/bin/../libexec/gcc/i686-pc-mingw32/4.3.6/ld.exe: cannot find -lwin32ada
collect2: ld returned 1 exit status
gnatlink: error when calling C:\Program Files\ADA\bin\gcc.exe
gnatmake: *** link failed.

[2011-02-08 16:28:19] process exited with status 4 (elapsed time: 06.26s)

Что делать?


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


Гость






Цитата
в каком модуле описаны константы wmsz_TopLeft итд?
Не описаны они вообще. Кому надо - тот открывает MSDN -> WM_SIZING Message, смотрит там на значения констант, и пишет себе в пакет:

WMSZ_TOPLEFT : constant := 4;
WMSZ_TOPRIGHT : constant := 5;
-- и так далее ...


Цитата
Вообще взаимодействие с виндой сделано очень неудобно, на каждый чих свой тип, всех их надо приводить, а то и конвертировать
Взаимодействие сделано в стиле языка. То, что в WinAPI куча дублирующих друг друга типов - это только проблемы WinAPI. Ада не может позволить программисту взять тип Integer, и использовать его как HBRUSH. Потому, что это сегодня они совпадают по размеру. А завтра (с выходом новой версии Windows или нового сервис-пака) могут и перестать совпадать. Именно поэтому, кстати, в свое время перестали работать многие программы при переходе Win16 -> Win32. А пользовались бы правильными типами (а не уверенностью в том, что размер одного будет вечно совпадать с размером другого) - работало бы до сих пор, достаточно было бы просто перекомпилировать код.

Цитата
на каждый чих компилятора долго подбирать какой тип в какой надо преобразовать, чтобы это скомпилировалось, кошмар.
Ничего не надо подбирать. Достаточно посмотреть на тип переменной-приемника, и привести тип переменной-источника (или выражения) к нему.

Цитата
Да ещё и куча функций, требующих параметр по ссылке, а давать ссылку на локальную переменную нельзя, приходится портить код и заводить глобальные переменные для того, чтобы применить их в локальной процедуре и передать ссылку на них, либо заводить указатель и выделять память при входе в процедуру, короче, одни костыли кругом.
Пример костылей можно посмотреть? Что-то я особых костылей, связанных с необходимостью передать по ссылке второй параметр BeginPaint, не вижу:

   function Window_Proc (hwnd    : Win32.Windef.HWND;
message : Win32.UINT;
wParam : Win32.WPARAM;
lParam : Win32.LPARAM) return Win32.LRESULT is

use Interfaces.C;
-- ...
My_DC : Win32.Windef.HDC;
bResult : Win32.BOOL;
Paint_Record : aliased Win32.Winuser.PAINTSTRUCT;

begin

case message is

-- ...

when Win32.Winuser.WM_PAINT =>
My_DC := Win32.Winuser.BeginPaint (hwnd, Paint_Record'Access);

-- ... Рисуем на My_DC ...

bResult := Win32.Winuser.EndPaint (hwnd, Paint_Record'Access);

when others => return
Win32.Winuser.DefWindowProc (hwnd, message, wParam, lParam);

end case;
return 0;

end Window_Proc;
(пример из совершенно рабочей программы, валялся у меня на флешке). Что я не так делаю?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
TarasBer   Заголовки Windows, Ada   8.02.2011 16:28
volvo   Вот на это я бы вообще не закладывался, некоторые ...   8.02.2011 17:07
TarasBer   > У тебя что, нет этого файла? Файл есть. Если...   8.02.2011 17:17
volvo   Попробуй создать новый проект, и когда он будет со...   8.02.2011 17:33
TarasBer   > Если в появившемся списке известных проектов ...   8.02.2011 17:51
TarasBer   Снес ГНАТ, переставил всё. Если прямо из среды доп...   10.02.2011 14:29
volvo   Хм... Как вариант попробуй в зависимостях добавить...   10.02.2011 15:31
TarasBer   > А потом попробуй закрыть среду, и посмотреть ...   10.02.2011 16:02
TarasBer   > А по проводу ошибки линкера - в проектах, исп...   11.02.2011 13:02
volvo   Странно. Значит, я не оттуда брал тот тестовый при...   11.02.2011 14:13
TarasBer   Программу я скомпилировал. Но окно белое. Новый во...   14.02.2011 11:22
volvo   function To_HBRUSH is new Ada.Unchecked_Convers...   14.02.2011 13:05
TarasBer   Вопрос: в каком модуле описаны константы wmsz_TopL...   21.02.2011 12:25
TarasBer   WM_SIZING тоже куда дели?   21.02.2011 13:11
volvo   Не описаны они вообще. Кому надо - тот открывает M...   21.02.2011 13:12
TarasBer   > Не описаны они вообще. Кому надо - тот открыв...   21.02.2011 13:24
volvo   А просто ради интереса проверь, вот такое будет ко...   21.02.2011 13:45
TarasBer   Unchecked_Access скомпилировался и заработал, спас...   21.02.2011 14:48
TarasBer   Я таки не понял, что происходит с исключениями вну...   25.02.2011 13:49
volvo   Хм. Извини, а с каких пор исключение может покидат...   25.02.2011 16:44
Гость   > Хм. Извини, а с каких пор исключение может по...   25.02.2011 17:11
volvo   Вот с этого самого и не должно. Если в Дельфи иск...   25.02.2011 18:41
volvo   Значит, смотри. Пользуемся возможностями Ады: Пак...   25.02.2011 20:43
TarasBer   В общем я тут сделал первую оконную программу на А...   5.03.2011 12:02
volvo   Ввели все типы, которые описаны в "Interfaces...   5.03.2011 16:13
TarasBer   > С точки зрения англоязычного программиста как...   5.03.2011 16:26
volvo   При линковке добавил -s: gnatlink F:\Program...   5.03.2011 18:07
-TarasBer-   > Кстати, откомпилировал твой проект со всеми W...   5.03.2011 18:26
volvo   Посмотрю, что можно еще сделать...   5.03.2011 19:21
TarasBer   В общем, включил я ВСЕ предупреждения. И выключил....   9.03.2011 10:02
volvo   Нет, он предлагает тебе либо убрать параметр из за...   9.03.2011 14:09
TarasBer   > Нет, он предлагает тебе либо убрать параметр ...   9.03.2011 14:41
volvo   Угу. Значит, включай все, кроме "Floating Poi...   9.03.2011 16:11
TarasBer   > Проблема не в этом. Проблема - в том, что теб...   10.03.2011 12:48
volvo   Ты ж выкрутился. Зачем тебе выносить эту функцию в...   10.03.2011 18:19
TarasBer   > Ты ж выкрутился. Круто, теперь у моего разбо...   11.03.2011 10:30
volvo   Так не пойдет. Максимум, что можно предложить: gen...   11.03.2011 11:56
TarasBer   1. От предупреждений я, вроде как, избавился. Прав...   17.03.2011 15:21
volvo   От этого предупреждения нельзя избавляться ни в ко...   18.03.2011 12:40
-TarasBer-   > Так что тебе надо либо включать pragma No_Str...   18.03.2011 19:32
volvo   Да. Если это нежелательно - то сделай то, что сам ...   18.03.2011 23:35
Ахмед   есть кто умеет писать на Аде?!! помогите, ...   28.05.2012 19:58
IUnknown   Задание нормально поставь. Какой тип элементов мас...   28.05.2012 20:37


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

 



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