![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
Сейчас попробую объяснить... Программа на Delphy уже написана, она предназначена для управления тактовым двигателем в абсолютном баллистическом гравиметре, так же она вычисляет абсолютное значение ускорения свободного падения в данном месте. Программа на FORTRANе вычисляет некую поправку, используя кучу всяких моделей... поэтому нужно, чтобы эта поправка участвовала в вычислении g, должно получаться более точное значение. Вот такие пироги...
![]() |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Понятно. Крайняя серия вопросов:
- читает (вводит) Фортран много? Операторов READ в основной программе много? - на значения этих (входных для Фортрана) величин какие-то предварительные расчёты в Делфи влияют? - задача сделать в Делфи "красивый ввод" (через окошки с рюшечками) для Фортрана стоИт? |
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
Вычисления в Delphy никак не влияют на вычисления в фортране. Должно быть согласовано только точное время вычисления и в том и вдругом.
Красивый ввод, наверное, не обязателен...нужно скорее просто сделать CALL в определенном месте, чтобы эта поправка использовалась в вычислениях. С первым вопросом сложнее... Имеется входной файл, куда вводятся начальные параметры, которые потом использует программа. Еще программа считывает данные из нескольких каталогов. Головная программа вызывает другие... Что еще сказать по этому поводу не знаю ![]() |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
А, ну в таком случае всё до скучного просто.
1. Пост #7. либо 2.a Фортран оформляете в виде dll, I/O - как в (1), вызов - как и все вызовы в Паскале. либо 2.b Фортран оформляете в виде dll, ввод данных в Фортране - как и сейчас, через файл(ы), результат (или даже результатЫ - их, я так понимаю, немного) возвращается в Delphi через параметры. В задачах, подобных этой Вашей, удаётся, как правило, до самого конца работы над проектом (если только Фортран - не из той предметной области, по которой Вы собираетесь защищать диссертацию ![]() Последний раз редактировалось Vago; 04.04.2012 в 16:43. Причина: Уточнил п.2.a |
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
Спасибо!
Для меня это конечно будет не просто ![]() Можно еще по пункту 2b несколько вопросов - он мне кажется наиболее приемлимым для моей ситуации ![]() 1. dll оформляется таким же образом как в пост 7, или все же есть различия? Если есть, то в чем? 2.И можно немного подробнее по поводу параметров, которые должны возвращаться в Delphy? ![]() 3. Правильно ли я понимаю, что в dll я оформляю только главную программу, а все остальные, как подключались к ней так и будут подключаться? Последний раз редактировалось Melfa; 04.04.2012 в 23:35. |
![]() |
![]() |
![]() |
#16 | ||
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#17 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
Так, уже стало более понятно
![]() Попробую более подробно вникнуть... Если появятся вопросы, могу я еще их позадавать? |
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Можно, можно... куда ж я от них денусь...
![]() ... Пока для Вас ВСЁ страшно, и не знаешь, за что хвататься, и не представляешь, что такое dll и как её построить, и как вызвать, и как передать, и как получить - откладываете реальную фортрановскую программу в сторону и пишете на Фортране так называемую "заглушку". Крошечную программку, единственная ф-я которой - вернуть те же и "примерно такие же" значения, что и "настоящая" фортран-программа. То есть, предположим, что ваша реальная программа на восемь листов на девять подпрограмм, в результате чтения двух десятков файлов и последующего трёхчасового перемолачивания считанного на Core i7 должна получить три числа, которые Вы хотите использовать в Делфи и порядок значений которых Вы знаете. Вместо этих девяти подпрограмм Вы пишете 7 строчек: Код:
- создавать dll - находить и загружать её из Delphi; - находить в этой библиотеке нужную ф-ю; - вызывать эту ф-ю; - получать в Delphi "насчитанные" значения. Когда все эти "страшные" вопросы отработаете, вот тогда и только тогда заменяете заглушку на реальную программу, уже не боясь, что Вы: - неправильно построили dll; - не нашли ее из Delphi; - нашли dll, но не нашли ф-ю; - нашли dll, нашли ф-ю, но вызвали неизвестно что, непонятно как; - всё нашли и правильно вызвали, но не сумели "забрать" результаты. Удачи! |
![]() |
![]() |
![]() |
#19 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
Спасибо Вам огромнейшее!
![]() |
![]() |
![]() |
![]() |
#20 |
Пользователь
Регистрация: 03.04.2012
Сообщений: 14
|
![]()
И снова здравствуйте!
С простой программкой у меня все получилось. Теперь возник вопрос, что делать с COMMON-блоками? или от них нужно просто избавляться, и делать из 9 подпрограмм одну большую? ![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создание fortran dll для c++ | Davlet M | Помощь студентам | 31 | 06.11.2011 10:34 |
Delphi Fortran DLL передача процедуры в качестве параметра | gimlis | Помощь студентам | 1 | 23.03.2011 22:52 |
создание fortran dll для c++ | Davlet M | C++ Builder | 3 | 28.02.2011 11:45 |