Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 14:59   #11
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Сейчас попробую объяснить... Программа на Delphy уже написана, она предназначена для управления тактовым двигателем в абсолютном баллистическом гравиметре, так же она вычисляет абсолютное значение ускорения свободного падения в данном месте. Программа на FORTRANе вычисляет некую поправку, используя кучу всяких моделей... поэтому нужно, чтобы эта поправка участвовала в вычислении g, должно получаться более точное значение. Вот такие пироги... более коротко - нужно просто соединить 2 программы, чтобы они работали согласованно.
Melfa вне форума Ответить с цитированием
Старый 04.04.2012, 15:07   #12
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Понятно. Крайняя серия вопросов:

- читает (вводит) Фортран много? Операторов READ в основной программе много?
- на значения этих (входных для Фортрана) величин какие-то предварительные расчёты в Делфи влияют?
- задача сделать в Делфи "красивый ввод" (через окошки с рюшечками) для Фортрана стоИт?
Vago вне форума Ответить с цитированием
Старый 04.04.2012, 15:23   #13
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Вычисления в Delphy никак не влияют на вычисления в фортране. Должно быть согласовано только точное время вычисления и в том и вдругом.
Красивый ввод, наверное, не обязателен...нужно скорее просто сделать CALL в определенном месте, чтобы эта поправка использовалась в вычислениях.
С первым вопросом сложнее... Имеется входной файл, куда вводятся начальные параметры, которые потом использует программа. Еще программа считывает данные из нескольких каталогов. Головная программа вызывает другие... Что еще сказать по этому поводу не знаю
Melfa вне форума Ответить с цитированием
Старый 04.04.2012, 15:37   #14
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

А, ну в таком случае всё до скучного просто.

1. Пост #7.
либо
2.a Фортран оформляете в виде dll, I/O - как в (1), вызов - как и все вызовы в Паскале.
либо
2.b Фортран оформляете в виде dll, ввод данных в Фортране - как и сейчас, через файл(ы), результат (или даже результатЫ - их, я так понимаю, немного) возвращается в Delphi через параметры.

В задачах, подобных этой Вашей, удаётся, как правило, до самого конца работы над проектом (если только Фортран - не из той предметной области, по которой Вы собираетесь защищать диссертацию ) смотреть на фортрановскую часть, как на если уж и не чёрный, то о-очень тёмно-серый ящик. Поэтому, сколько там подпрограмм, каких длин COMMON-блоки, что на что накладывается по EQUIVALENCE, что и куда передаётся внутри - обо всём этом можно не задумываться.

Последний раз редактировалось Vago; 04.04.2012 в 16:43. Причина: Уточнил п.2.a
Vago вне форума Ответить с цитированием
Старый 04.04.2012, 23:19   #15
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Спасибо!
Для меня это конечно будет не просто я по специальности не программист, но буду очень стараться разобраться)
Можно еще по пункту 2b несколько вопросов - он мне кажется наиболее приемлимым для моей ситуации
1. dll оформляется таким же образом как в пост 7, или все же есть различия? Если есть, то в чем?
2.И можно немного подробнее по поводу параметров, которые должны возвращаться в Delphy?
3. Правильно ли я понимаю, что в dll я оформляю только главную программу, а все остальные, как подключались к ней так и будут подключаться?

Последний раз редактировалось Melfa; 04.04.2012 в 23:35.
Melfa вне форума Ответить с цитированием
Старый 04.04.2012, 23:38   #16
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Melfa Посмотреть сообщение
1. dll оформляется таким же образом как в пост 7, или все же есть различия? Если есть, то в чем?
"Пост #7" это НЕ dll!! Это - именно та фортрановская программа, которая у Вас сейчас. Exe-файл. Только запускать её Вы будете не "напрямую", как сейчас, а из программы на Делфи.

Цитата:
Сообщение от Melfa
2.И можно немного подробнее по поводу параметров, которые должны возвращаться в Delphy?
Это только Вам решать. Я вашу предметную область не знаю. Те числа, которые насчитывает Фортран и которые нужны потом в Делфи, вот их в параметры и запихивайте.
Vago вне форума Ответить с цитированием
Старый 04.04.2012, 23:43   #17
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Так, уже стало более понятно прошу прощения, что немного торможу...
Попробую более подробно вникнуть... Если появятся вопросы, могу я еще их позадавать?
Melfa вне форума Ответить с цитированием
Старый 05.04.2012, 00:22   #18
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Можно, можно... куда ж я от них денусь...
...
Пока для Вас ВСЁ страшно, и не знаешь, за что хвататься, и не представляешь, что такое dll и как её построить, и как вызвать, и как передать, и как получить - откладываете реальную фортрановскую программу в сторону и пишете на Фортране так называемую "заглушку". Крошечную программку, единственная ф-я которой - вернуть те же и "примерно такие же" значения, что и "настоящая" фортран-программа. То есть, предположим, что ваша реальная программа на восемь листов на девять подпрограмм, в результате чтения двух десятков файлов и последующего трёхчасового перемолачивания считанного на Core i7 должна получить три числа, которые Вы хотите использовать в Делфи и порядок значений которых Вы знаете. Вместо этих девяти подпрограмм Вы пишете 7 строчек:
Код:
      SUBROUTINE FOO( A, B, C )
         REAL A, B, C
         A = 1.
         B = 2.
         C = 3.
         RETURN
      END
и на этих cеми строчках учитесь:
- создавать dll
- находить и загружать её из Delphi;
- находить в этой библиотеке нужную ф-ю;
- вызывать эту ф-ю;
- получать в Delphi "насчитанные" значения.
Когда все эти "страшные" вопросы отработаете, вот тогда и только тогда заменяете заглушку на реальную программу, уже не боясь, что Вы:
- неправильно построили dll;
- не нашли ее из Delphi;
- нашли dll, но не нашли ф-ю;
- нашли dll, нашли ф-ю, но вызвали неизвестно что, непонятно как;
- всё нашли и правильно вызвали, но не сумели "забрать" результаты.

Удачи!
Vago вне форума Ответить с цитированием
Старый 05.04.2012, 10:28   #19
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

Спасибо Вам огромнейшее!
Melfa вне форума Ответить с цитированием
Старый 13.04.2012, 18:59   #20
Melfa
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 14
По умолчанию

И снова здравствуйте!
С простой программкой у меня все получилось.
Теперь возник вопрос, что делать с COMMON-блоками? или от них нужно просто избавляться, и делать из 9 подпрограмм одну большую?
Melfa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание 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