IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Cрочно! Помогите! Pascal<-fortran, Pascal<-Fortran
Brayhead
сообщение 7.07.2004 8:08
Сообщение #1


Гость






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

Мы горим синим пламенем, очень срочно!
 К началу страницы 
+ Ответить 
virt
сообщение 7.07.2004 8:32
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


а ты напиши интерпретатор фортрана ,и встрой его в свою прогу.
иначе никак нельзя.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NetAnton
сообщение 7.07.2004 9:35
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 112
Пол: Мужской

Репутация: -  0  +


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

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

Сообщение отредактировано: NetAnton - 7.07.2004 15:00


--------------------
Я люблю этот форум!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 7.07.2004 11:44
Сообщение #4


Гость






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

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

Вот тебе и .Net в плане кроссязычности smile.gif
 К началу страницы 
+ Ответить 
GLuk
сообщение 7.07.2004 18:42
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


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

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

Можно воспользоваться фортрановским компилером для получения кода.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Brayhead
сообщение 8.07.2004 10:11
Сообщение #6


Гость






Ребята, скажите СКОЛЬКО и КАК - я заплачу по любым расценкам!
Только пожалуйста!
Пришлите пример: вот программа на борланд-паскале:
Код
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 получить результат??????

Сообщение отредактировано: volvo - 22.01.2005 16:39
 К началу страницы 
+ Ответить 
NetAnton
сообщение 8.07.2004 10:57
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 112
Пол: Мужской

Репутация: -  0  +


ну Пролог я знаю на уровне яселек. там можно объявить функцию как public? тогда экспортируй ее в obj-модуль, а на Паскале:

Код

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

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


--------------------
Я люблю этот форум!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 8.07.2004 13:44
Сообщение #8


Гость






Код

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
сообщение 9.07.2004 15:23
Сообщение #9


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
ну Пролог я знаю на уровне яселек.

А где здесь Пролог ?
NetAnton, какой пролог изучал?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
NetAnton
сообщение 10.07.2004 14:53
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 112
Пол: Мужской

Репутация: -  0  +


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


--------------------
Я люблю этот форум!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 10:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"