Delphi 与 FORTRAN语言的混合编程

类别:Delphi 点击:0 评论:0 推荐:

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

本文采用两种不同的方法来实现混合编程。一种是直接执行可执行文件的方式,一种是调用动态链接库中子程序的方式。在第一种方式下,在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 )表示在正常状况下执行该可执行文件。

 

本文地址:http://com.8s8s.com/it/it5135.htm