Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Tools] GUI на Salford FTN95 Personal Edition 
:(
    Опции темы
FatalError
Дата 25.10.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



Цитата

Salford FTN

В принципе, пока это единственный известный мне комерческий компилятор, распространяемый бесплатно под винды.


Я маленько поюзал эту штуку, что-то не пришел в восторг... Особенно от библиотеки ClearWin+, которая должна помогать в изготовлении ГУЕвых прог под Windows (в смысле прог с GUI). Кое-что не слишком сложное она действительно позволяет сделать очень быстро, какое-нибудь окошко с парой кнопок и текстом (даже с цветным шрифтом, наклонным и т.п.) - не проблема. Чуть посложнее - полный абзац. Во-первых, там такой синтаксис, что сума сойдешь. Все возможности ClearWin+ реализуются вызовом одной-единственной функции, и чтобы библиотека тебя правильно поняла, нужно в этом вызове распихивать управляющие значки типа %tb, %cn и так далее, запомнить которые практически невозможно. А еще надо следить, чтобы был закрывающий значок в нужном месте. И проверять потом, куда закралась ошибка в таких вызовах, напичканных бессмысленными значками, это занятие не для слабонервных. Во-вторых, документация на эту библиотеку в хелпе определенно давно не обновлялась, некоторые примеры оттуда не компилируются. В третьих, поставляемое с компилятором IDE откровенно глючное. Есть, правда, один глюк со знаком плюс: при компиляции программ из командной строки (без IDE) в них не вставляется баннер, указывающий на использование некоммерческого варианта компилятора.

В общем, ну его, такое бесплатное, это больше на бета-версию похоже. Я лучше на g95 компилировать буду.
PM MAIL   Вверх
FatalError
Дата 21.11.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



Я в предыдущем посте высказал подозрение, что фришный компилятор Salford FTN95 - это что-то вроде бета-версии. Похоже, был не так уж неправ. Вот сколько багов они наисправляли к версии 4.9 (у меня стояла 4.8) - взято с сайта их форума:
Цитата

The following is a summary of FTN95 bugs that have been fixed at version 4.9:

* Missing member initialation in array elements of user-defined TYPE.
* INQUIRE(PAD=...) missing.
* Runtime problem with SHAPE intrinsic - arrays erroneously reported as not conforming.
* Corrupt header of very large record in unformatted IO.
* INTEGER i = 'F' does not generate warning or code for .NET.
* /OPT failure with benchmark test
* INTENT(OUT) fails for .NET objects with /CHECK.
* FORALL construct gives incorrect results for multiple "overlapping" assignments.
* FORALL construct expanded incorrectly.
* Call to routine with optional arguments fails under /CHECK.
* False error report with MVBITS.
* NET false runtime error "Array subscript > upper bound".
* False compilation error "Duplicate sub-program name".
* Problem with implied-DO in PARAMETER initialisation.
* /OPT failure - mixed REAL*4 and REAL*8 in DO-loop assignment.
* False compilation error for computed GOTO with integer expression.
* /STATISTICS gives floating point exception for "zero" elapsed time.
* /INTS should not over-ride INTEGER*4.
* INTENT(IN) problem with /CHECK and .NET DLL.
* Problem with different TYPEs with same member name.
* Garbage collection problem under .NET.
* Temporary array overwrites allocated array.
* False /CHECK runtime error "Too few array elements".
* Member of TYPE falsely reported as missing.
* False error report with pointer assignment.
* TYPE constructor fails when passing a pointer.
* INQUIRE gives error when calculating IOLENGTH of TYPE.

Глюки с UDT и с динамическими массивами - просто из серии смертельных. Но раз исправили... В общем, скачал более новую версию, буду смотреть.

Да, поковырял я их справку, оказалось, что у Salford FTN95 есть определенные удобства для программирования на Win32 API. Можно просто передавать из Фортрана параметры, не заботясь, например, о проблемах несоответствия строк Фортрана и С. Компилятор сам организует временную строковую переменную, припишет к ней нолик и передаст в функцию Win API, а потом вернет в исходную переменную. Можно даже передавать значение из фортрановской строки CHARACTER*(*), по умолчанию компилятор скажет функции Win API, что длина строки равна 256. А можно при вызове самому нужную длину определить. И все эти прибамбасы начинают работать, если функция определена как STDCALL (это - в справке, в инклюдах почему-то C_EXTERNAL). Пустячок, а приятно.

PM MAIL   Вверх
FatalError
Дата 24.11.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



Ну вот, попробовал с этим Salford FTN попрограммить на Win32 API, основываясь на книжке Васильченко. Результат плачевный. Вы, наверно, будете смеяться, но я не смог объявить функцию WinMain. И явно из-за глюка компилятора. Для написания собственных функций, поддерживающих STDCALL, их нужно для Salford FTN объявить с ключевым словом F_STDCALL. Я объявил, в соответствии с примером из файла справки, а компилятор начал придираться к отсутствию запятых. Нету там запятых в примере! Ну ладно, раз он их хочет, поставил. Все равно не помогло: пошли другие придирки, которые я вообще не понял. Но, в общем, тот вариант объявления собственной STDCALL функции, который описан в справке к компилятору, явно не прокатывает. Опять то ли справка плохая, то ли компилятор глючный. Вспомнил английский, запостил цидулю к ним на форум. Теперь жду ответа.

Это сообщение отредактировал(а) XPEHOMETP - 29.11.2006, 18:49
PM MAIL   Вверх
FatalError
Дата 28.11.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



Ответ такой: объявлять функцию WinMain НЕ НУЖНО! Пишется просто PROGRAM..., как всегда в Fortran. Компилятор сам привяжет все к операционной системе. Правда, раз это делает сам компилятор, то программисту нету доступа к HINSTANSE, и программированию на чистом Win32 API наступает полный абзац. Ибо без этого параметра ни класс окошек не зарегистрировать, ни вызвать функцию CreateWindow.
PM MAIL   Вверх
FatalError
Дата 29.11.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 11.4.2006

Репутация: нет
Всего: 1



Хе-хе, додавил-таки гада! Получилось создать окошко на Win32 API c Salford FTN95! Правда, сначала пришлось применить грязный трюк. Создал маленькое окно с помощью библиотеки ClearWin+, получив на него handle, потом с его помощью функцией GetWindowLong заимел hInstance, а дальше уже все по Васильченко. WNDCLASS пришлось самому определять, не было его в инклюдах, но это мелочи. Теперь экспериментирую потихоньку. Кое-что, похоже, не работает: не удалось запустить GetClientRect, пытаюсь разобраться. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.1655 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.