在Delphi调用Fortran编译的DLL,DLL运行过程中的输出内容到指定窗口(100分)

  • 主题发起人 主题发起人 YANDUT
  • 开始时间 开始时间
Y

YANDUT

Unregistered / Unconfirmed
GUEST, unregistred user!
想观察程序运行过程中的一些输出结果。对于Fortran编译的可执行文件,可以用管道输出解决;对于Fortran编译的动态链接库,Delphi调试运行的程序没有输出想看到的内容。从道理上讲这应该和运行可执行文件差不多,但如何实现对进程的控制?应该说Fortran编译的执行程序是一个控制台程序,其运行时输出窗口在Delphi中不可见了吗?还是没有这个输出窗口?
第一次提问还请各位多多照顾,请大侠指点迷津!
 
DLL里有控制台?
你想得到DLL里的什么输出?
不大懂你在说什么?
 
不是DLL里有控制台,是把原先的一个控制台程序变为动态链接库在Delphi中调用。
想把原先控制台程序里的一些计算的中间结果输出到指定窗口。其实可以把计算结果保存在文件中,之后读文件就可以了;不知道还有没有别更好的方法。
 
我现在把DLL模块计算的结果写到一个文件里,之后通过Delphi读文件.
这个问题就到这吧.
 
7年不用Fortran。Fortran77不好玩。
 
第一次来,不知该怎么使用论坛。就把问题提在这儿了,大侠帮我看看。
我用fortran编写dll,然后用delphi调用。参数传递好像有错。
fortran 程序如下:
Subroutine SUB_NAME(A,B)
!DEC$ATTRIBUTES DLLEXPORT::SUB_NAME
REAL A,B
!DEC$ ATTRIBUTES VALUE::A,B
OPEN(6,FILE='OUT.DAT')
WRITE(6,*) A,B
C100 FORMAT(5X,E8.3,5X,E8.3)
CLOSE(6)
END SUBROUTINE
delphi程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var A : double;
B : string;
begin
A := strtofloat(Edit1.Text);
B := strtofloat(Edit2.Text);
SUB_NAME(A,B);
end;
就是要在delphi中从edit框里得到A、B值,然后传递给fortran编写的dll,将A,B输出到文件里。这只是简单试用delphi调用fortran编写的dll,我真实需要是调用另外一个较复杂的fortran程序,调用方法相同,传入两个参数,计算后生成一个文件。
但是上面情况输出结果与实际A,B值相差很远,不知道是哪儿传递有问题,还是其他问题。希望有人指教。
 
我没试你的程序,但看你的参数传递类型对不上:
(1)REAL A,B;// Fortran中
(2)var A : double
//Delphi中
B : string;
问题是不是出在这。
还有一个笨方法就是利用外部文件来传递参数,这样做万无一失;当然这不是最好的方法了。
 
多谢。
用文件传递比较方便:)现在已经可以用了。
只是还想弄明白通过参数传递是怎么传递的。我试着在delphi里和fortran里分别设置参数为整形(integer)、实形(real),字符串(string),都没有成功。我是第一次用这个,不清楚是哪儿的问题,还望指教。再次感谢!
 
后退
顶部