![]() |
|
|
![]()
|
|
| KrotOnline |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.12.2007 Репутация: нет Всего: нет |
Имеется форма(vb6) которая передает значения переменных для расчета fortran библиотеке. В библиотеке есть ряд условий правильности расчета(к примеру деление на ноль).
Как сделать чтобы из любой части кода, по инициативе dll, передавались параметры переменных в форму? |
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
||||
|
||||
| KrotOnline |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 15.12.2007 Репутация: нет Всего: нет |
Что то подобное:
такого рода условий порядком. Если условие выполняется ход выполнения кода невозможен. Задача, чтобы я знал на каком условии тормознулась программа. Возможно это реализовать как либо? |
|||
|
||||
| FCM |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Многочисленные условия типа "if (a.eq.b) stop" - это конечно не есть хорошо (тем более, если a и b вещественные).
Есть некоторые подходы, которые могут иметь отношение решению проблемы. Если не ошибась, все эти подходы так или иначе связаны с механизмом генерации/обработки SEH-исключений. В общих чертах: 1) Если речь идет о до-интелловском Visual Fortran (например, Copmaq), то можно попробовать воспользоваться функцией, аналогичной С-функции _matherr, которая проявляет себя, когда возникает то или иное критическое условие - но нужно посмотреть список таких критических условий. 2) Как правило по умолчанию при делении на ноль FPU проглотит эту неприятность и вернет что-нить типа Infinity. Можно заставить его генерировать исключение, которое будет перехватываться по видимому Fortran RTL обработчиками, причем при соответствующих настройках кроме диагностики будет проведена трассировка (т.е. указана строка исходника, содержащая неприятность). 3) Не помню как в Compaq, но в Intel можно попробовать воспользоваться IFPORT-процедурой SIGNALQQ, являющейся конвертом для С-функции signal, которая тоже имеет отношение к механизму исключений Когда приложение чисто фортранное, то проще использоваться пункты 1 (Compaq) и 2 . В случае же вызова fortran DLL из VB - тут надо конкретно посмотреть (может быть подойдет только п.3). Опять же одно дело просто продиагностировать, и совсем другое - организовать альтернативное поведение программы. Это сообщение отредактировал(а) FCM - 4.10.2010, 13:12 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |