Pascal问题(100分)

颜纯

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:
1. 用Delphi或C++Builder能否调用Fortran语言编制的程序?
2. Fortran程序能否转换为C/C++或Pascal程序?
颜纯
2000.1.30.
 
1.可通过调用*.obj/*.Dll等方法来实现;但若调用Fortran源码则不行!
2.同上
 
1.调用,winexec
2.转换,好象没有。
 
1)源码肯定是不行啦,不过如何是EXE则不论是否fortran.
2)现阶段还没有现成的工具吧?如果能够看懂它的愿意,手工转译也不难,
不过它们之间有区别,象F本身就是为了大量计算而设,在精度等方面其它语言
很难做到。
 
1。他的意思就是调用程序
2。可能会有工具,我记得我们学校有人做毕业课题就是。不过忘了什么语言间的转换
我只有fortran to basic
 
Fortran是科学计算语言。学机械电子的都用这个。
只是我在学校里只见Fortran77的语言程序是不能编译成可执行程序。
更未听说编译成*.obj/*.Dll的呢?
不过当年刚学Pascal时曾见过一本书讲过Pascal的与其他语言的接囗
程序。其中好象有Fortran的,只是不记的了。你不妨到书店中找找。
 
看到一些Answer,感到多是泛泛而论.其实Microsoft公司有一个
Fortran PowerStation V4.0的可视化编程语言, 可以和VB VC/VC++
等混合编程, 我提出的问题只是能否用Delphi或C++Builder做得更好
一些. 中国科技大学有Fortran To Pascal的程序,是好几年以前的,
现在不知道到哪里找?
2000.2.5.
 
我母亲是搞凝聚态物理的,她现在用的是从复旦弄来的LF90,fortran90的编译器,
号称是能生成32位高速代码,用此编译器可以生成EXE,据说功能强大,不知对C++
有没有接口,我母亲一直用其作能带分析,速度感很好.你可以去复旦打听一下,
科大应该也有.
我个人感觉就数学计算而言,没人能比的了FORTRAN.用
Fortran PowerStation V4.0是首选,但是D版极少.去北大问问(先进数学软件的D版发源地).
我不认为VC能如何.我曾经用C和fortran编过同样的东西,fortran
的数最准确.(准确的多)
 
我也对这个问题感兴趣。
当初我用MS fortran5.1做过DLL,用Delphi1.0调用成功过,它们都是
16位的。后来我试着用fortran powerstation生成DLL,用delphi2.0
调用没有成功,不知为什么?是不是16位的DLL和32位的DLL格式不一样?
 
to 颜纯:
我现在正用Delphi4.0与Fortran混合写毕业论文,Delphi4.0调用Fortran的DLL成功。DLL用Fortran PowerStation V4.0编译,有问题可以于我联系。
 
我见过Fortran转C的程序,也见过C to Pascal,两者一起不就是
Fortran to Pascal?
 
转一次就不成样子了,转2次就...
 
请koala先生告知Pascal 调用 FortranPowerstation DLL的方法。
颜纯 2000.3.14.
E-mail:yzys@pub.yz.jsinfo.net
 
To Koala,
Sorry,我一直没有时间编程,最近才拾起来。现程序已调通。但在运行时发生错误:
"Project M.exe raised exception class EAccess Violation with message 'Access
Violation at address 1000109F in module 'cdll.dll'. Write of address 00437000'
Process stopped,use Step or Run to Continue."

我的接口部分如下:
Delphi 部分
interface
.
.
.
var
d1,d2,n,f0,fn:real;
r,p,p0,t,h,tau,alpha,l,w:real;
stype:Integer;
procedure a(stype:Integer;d1,n,d2,fn,f0:real;var r,p,p0,t,h,tau,alpha,l,w:real);stdcall;
.
.
.
implementation
uses SysUtils, About;
{$R *.DFM}
procedure a;far;stdcall;external 'cdll.dll';

procedure TSDIAppForm.Button1Click(Sender: TObject);
begin
a(stype,d1,n,d2,fn,f0,r,p,p0,t,h,tau,alpha,l,w);
end;

c Fortran DLL 部分
subroutine a(stype,d1,n,d,delta,delta0,r,p,p0,t,h,tau,alpha,l
$,w)
!MS$Attributes DLLEXPORT,C::a
!MS$Attributes ALIAS :'a'::a
!MS$Attributes Reference::r,p,p0,t,h,tau,alpha,l,w

real d1,n,d,delta,delta0,n0,r,p,p0,t,h,tau,alpha,l,w
integer stype

请指出错误所在,并告知解决办法。
颜纯

2000.7.27.
 
参数传递有问题
pascal和fortran的数据存储格式是不一样的
 
多人接受答案了。
 
顶部