Помощь - Поиск - Пользователи - Календарь
Полная версия: Cрочно! Помогите! Pascal<-fortran
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Brayhead
ООООчень срочно требуется!!!
Как вставить в программу на Паскале (Дельфи) вызов подпрограммы на Фортране?
Пожалуйста, приведите пример простейшей программы, из которой производится вызов считающей фортран-сабраутины!
Пришлите tortois@chel.tv

Мы горим синим пламенем, очень срочно!
virt
а ты напиши интерпретатор фортрана ,и встрой его в свою прогу.
иначе никак нельзя.
NetAnton
virt, представляешь, сколько придется с этим возиться? blink.gif
пока напишешь весь интерпретатор (полный), может уйти не один день. А так, гляди, и новый язык создадишь :D

на Фортране можно скомпоновать OBJ и через Паскаль вызывать.
BlackShadow
Цитата
на Фортране можно скомпоновать OBJ и через Паскаль вызывать.

а можно и из Delphi и из C/C++...
Много откуда можно.

Вот тебе и .Net в плане кроссязычности smile.gif
GLuk
Цитата(Brayhead @ 7.07.04 5:08)
ООООчень срочно требуется!!!
Как вставить в программу на Паскале (Дельфи) вызов подпрограммы на Фортране?
Пожалуйста, приведите пример простейшей программы, из которой производится вызов считающей фортран-сабраутины!
Пришлите tortois@chel.tv

Мы горим синим пламенем, очень срочно!

Можно воспользоваться фортрановским компилером для получения кода.
Brayhead
Ребята, скажите СКОЛЬКО и КАК - я заплачу по любым расценкам!
Только пожалуйста!
Пришлите пример: вот программа на борланд-паскале:
Код
Program TRIANG;
var A, B, C, D, S, P: Real;
procedure fort(var D: real);        
 begin
   fort(D);
   Read(A,B,C);
   WriteLn(A,B,C);
   P:=(A+B+C)/2;
   S:=(P*(P-A)*(P-B)*(P-C+D)/2);
   WriteLn('S=',S:8:3)        
 end.

Вот сабраутина на фортране:
Цитата
subroutine fort
  real d
  d=15.0
  stop
  end

Как для tpc (7й TP) и fl32 получить результат??????
NetAnton
ну Пролог я знаю на уровне яселек. там можно объявить функцию как public? тогда экспортируй ее в obj-модуль, а на Паскале:

Код

function fort; external;
{$L file.obj}

var p:integer;
begin
   p:=fort; {или что-то в этом роде}
end;
BlackShadow
Код

Program TRIANG;
var A, B, C, D, S, P: Real;
[b]procedure fort(var D: real); [/b]
begin
fort(D);
Read(A,B,C);
WriteLn(A,B,C);
P:=(A+B+C)/2;
S:=(P*(P-A)*(P-*(P-C+D)/2);
WriteLn('S=',S:8:3)
end.

Выделенную строчку надо заменить примерно так:
Код

Procedure Fort(Var d:Integer);External;

NetAnton, там же процедура, а не функция.
А в остальном NetAnton прав. Надо скомпилировать двой модуль на фортране в .obj-файл (это что-то промежуточное между текстом и .exe), скопировать его для удобства в папку указанную в BP в опции Options->Derictories->OBJ's Derictory, а затем прилинковать к проге на BP при помощи дериктивы {$L MyPrologModule.obj}. Только имя в формать 8.3 smile.gif
Altair
Цитата
ну Пролог я знаю на уровне яселек.

А где здесь Пролог ?
NetAnton, какой пролог изучал?
NetAnton
у меня Турбо Пролог 2.0 и еще какой-то Arity Prolog (но то не важно). изучал я только так - открывал .pro файл и смотрел на код. может в ВУЗе будем его детально изучать, не знаю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.