Delphi 与 FORTRAN语言的混合编程

原创 2004年03月10日 13:58:00

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

众所周知,FORTRAN强于数值计算,尤其是如果计算主要针对复数进行,则FORTRAN更有无可比拟的优势。FORTRAN是所有语言中唯一将复数定义为一种标准数据类型的语言。但是FORTRAN语言在可视化程序设计方面是非常欠缺的,至少目前还没有一家厂商推出具有RAD特性的FORTRAN编译集成开发环境。因此,当用FORTRAN实现了一种大型的科学计算以后,却难以将这种计算转变为数据输入简易、结果显示方便的WINDOWS可视化应用程序。这一点,采用Delphi很容易实现。因此,在许多情况下,使用FORTRANDelphi的混合编程可同时具有二者的优点。

本文采用两种不同的方法来实现混合编程。一种是直接执行可执行文件的方式,一种是调用动态链接库中子程序的方式。在第一种方式下,在Delphi程序设计中直接执行FORTRAN程序的执行文件,通过文件来进行数据交换;在第二种情况下,首先将FORTRAN程序编译成动态链接库(DLL),在Delphi程序设计中,调用此动态链接库中某个子程序来完成某项计算。这两种方式各有优缺点。第一种方式的调试较为简单,不存在不同语言之间的数据类型的不匹配问题。但是,这种方式下,在Delphi中无法实现对程序运行的有效监督,同时,以文件进行数据交换在操作中也不太方便,效率也不高。第二种方式则整合了两种程序之间的差别,如果编制成功,程序运行时看不出混合语言编程的痕迹,但是这种方式调试起来特别麻烦。一般说来,对于已有的输入输出较为复杂的FORTRAN程序,可以考虑第一种方式,而对于相对简单的,或者自己着手编制的新的程序,可选用第二种。

 

1.执行可执行文件(exe)方式

Windows中提供了API函数WinExec来执行存在的执行文件。该函数定义为:

UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow );

参数说明如下:
        LPCSTR lpCmdLine: 包含要执行的命令行。

系统将在以下范围查找应用程序:
            应用程序启动位置
            当前目录位置
            Windows system目录
            Windows 目录
            path中设置的路径列表
        UINT uCmdShow: 定义了以怎样的形式启动程序的常数值。具体说明如下:
           SW_HIDE 隐藏窗口,活动状态给令一个窗口 
           SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
 
           SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
 
           SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
 
           SW_SHOWMAXIMIZED 最大化窗口,并将其激活
 
           SW_SHOWMINIMIZED 最小化窗口,并将其激活
 
           SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
 
           SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
 
           SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
 
           SW_SHOWNORMAL SW_RESTORE相同 

如果Str为一记录可执行文件的路径及文件名变量,则WinExec ( Pchar ( Str ), SW_SHOWNORMAL )表示在正常状况下执行该可执行文件。

 

VS与IVF C/C++与Fortran混合编程的解决方案

IVF与VS结合的Fortran IDE,由于VS中的项目只能使用同一种语言来编程,所以如果要实现C/C++调用Fortran的功能,目前只有将Fortran代码编译成动态库或静态库的方式来实现: ...
  • zhuxianjianqi
  • zhuxianjianqi
  • 2012年10月16日 11:44
  • 2737

C#和Fortran的混合编程

Department of Gophysics, Yangtze University, Jingzhou, Hubei, China 434023     mou_yq@126.com ======...
  • HanYanBin
  • HanYanBin
  • 2010年07月09日 13:40
  • 2165

C和Fortran混合编译初步

目录[隐藏]1 Fortran与C混合编程2 Fortran调用C函数3 C调用Fortran函数4 其他参考[编辑]Fortran与C混合编程由于 GNU 的 Fortran 和 C 语言二者的函数...
  • Augusdi
  • Augusdi
  • 2012年03月13日 13:28
  • 4081

Matlab与Fortran混合编程:m…

原文地址:Matlab与Fortran混合编程:mexfunction作者:fishpjy一、编程环境 Matlab R2012b + Visual Studio 2010 + Intel Visua...
  • ProMath
  • ProMath
  • 2014年06月03日 17:14
  • 1649

C语言和Fortran混合编程结构体传递参数

本人使用C语言时间比较长,对Fortran了解一点,不是很深,最近在做研究时突然用到了一个Fortran编写的程序,但是里边的代码并不适合自己的研究目的,由于代码很凌乱,加上自己也不熟悉那块理论基础,...
  • hhshiyi
  • hhshiyi
  • 2016年11月24日 19:39
  • 947

.Net ( c# ) 与 Fortran 混合编程实例(一):求线性方程组的解

几点说明: 1.线性方程组的输入采用矩阵形式,以 “," 分割,写入 txt 文本中; 2. .Net 读取文本,以 ”,“ 拆分存入二维数组中,再将数组传递给 Fortran DLL 进行求逆、...
  • silyvin
  • silyvin
  • 2011年10月04日 16:48
  • 1992

DELPHI和FORTRAN语言的混合编程(二)

2.调用动态链接库(DLL)方式第二种方法比第一种方法实现起来麻烦一些。在这种方法中,FORTRAN程序首先被编译成Windows标准的动态链接库文件(DLL, Dynamic-Link Librar...
  • cxb_zdl
  • cxb_zdl
  • 2004年03月10日 13:58
  • 909

FORTRAN/C/C++混合编程

RTRAN 混合编程 混合编程在软件编程中是经常遇到的问题,尤其是C/C++/FORTRAN的混合编程,本文主要说明以上三种语言混合编程中经常遇到的问题,同时,也说明了不同平台下混合编程应注意的...
  • zhuxianjianqi
  • zhuxianjianqi
  • 2012年10月14日 13:28
  • 7485

汇编语言和C语言的混合编程

C/C++语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的...
  • yunhaiC
  • yunhaiC
  • 2007年01月16日 17:47
  • 2662

VS与IVF C/C++与Fortran混合编程的终极解决方案

IVF与VS结合的Fortran IDE,由于VS中的项目只能使用同一种语言来编程,所以如果要实现C/C++调用Fortran的功能,目前只有将Fortran代码编译成动态库或静态库的方式来实现: ...
  • hjh2005
  • hjh2005
  • 2012年04月22日 22:32
  • 7000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi 与 FORTRAN语言的混合编程
举报原因:
原因补充:

(最多只允许输入30个字)