Delphi与FORTRAN语言的混合编程 - 核能革新 ChinaNet
热图推荐
    查看: 7405|回复: 0
    打印 上一主题 下一主题

    Delphi与FORTRAN语言的混合编程

    [复制链接]

    36

    主题

    38

    帖子

    118

    积分

    注册会员

    Rank: 2

    积分
    118
    跳转到指定楼层
    楼主
    发表于 2015-4-8 10:58:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    众所周知,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 )表示在正常状况下执行该可执行文件。

    转自52mc
    回复

    使用道具 举报

      关注我们
    • 微信公众号:
    • NuclearNet
    • 扫描二维码加关注

    Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc.

    联系我们|网站声明|中国核网-核能领域第一垂直门户网站

    快速回复 返回顶部 返回列表