这个标题不知在这里合适否?有关FORTRAN语言与EXCEL的问题。。。
FORTRAN语言一直在很多领域里广泛使用,可是却没有绘图功能(反正我手里的版本没有这功能,可能即使有也不方便)。我想通过李版主(EXCEL TO CAD 绘图)的程序来达到绘图目的,问题是如何能使在FORTRAN里计算出来的数据自动转换到EXCEL指定的表格中?这一想法能实现吗?望各位斑竹指点! FORTRAN有没有ActiveX功能? FORTRAN77应该能绘图的啊,不过没听说过FORTRAN与ACAD的接口。有兴趣的话,我们可以聊聊FORTRAN在计算机绘图中的应用问题,只是在这好象不方便。刚学计算机绘图时,因为FORTRAN在数学计算上的功能,基本上都是用FORTRAN作为算法描述语言,不过好多年没用过了。 FORTRAN绘图不是它的强项,我手里的也就是FORTRAN77。不过VB可以调用FORTRAN,也就是混合编程(我还没有搞懂,好像要用到w32api)。 有些软件没有提供ActiveX接口,但有时会提供一些API接口, 不知FORTRAN是否提供了这些接口。 明总:FORTRAN没有提供那些接口。不过可以把FORTRAN程序编译成动态连接库.DLL.. 个人理解:
楼主的意思是想利用FORTRAN77的数学计算功能输出计算结果,再在ACAD绘制图形。这样的话,通过EXCEL好象太麻烦点。当然,可以将FORTRAN代码编译成可由其它程序语言调用的库函数(即所谓API接口)再由VBA调用。不过更简单更直接的方法是按照给定的统一的格式由FORTRAN将计算结果输出为TXT文本文档(甚至直接输出DXF亦无不可),在ACAD二次开发(VBA或者其它)中用同样的格式读取文本文档绘图。
接触到WIN95和C++后,我将原来的大部分FORTRAN程序都转到C++中去了,这以后再没用过FORTRAN,以上理解是否有误,请楼主指出。 版主说得很对!
利用FORTRAN是因为现成的源程序很多,想省点事偷偷懒,呵呵。
版主提醒直接用文本文档转换的确是好办法,我先试试编一个。。。 本帖最后由 作者 于 2003-10-22 20:53:08 编辑
这是FORTRAN程序:
program sort
dimension arr(10)
integer n
nupper=10
open(1,file='e:beforesort.dat',status='old')
do 10 n=1,nupper
read(1,*) arr(n)
10continue
close(1)
open(2,file='e:aftersort.dat',status='new')
do 40 n=1,nupper
write(2,100)'第',n,'数',arr(n)
write(*,100)'第',n,'个数',arr(n)
40 continue
100 format(1x,a5,i2,a5,1x,f8.3)
close(2)
end
在VB里用API函数调用FORTRAN
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const infinite = -1&
Private Const synchroniz = &H100000
Private Sub Command1_Click()
Dim itask As Long, ret As Long, phandle As Long
filename1 = "a:\beforesort.dat"
filename2 = "a:\aftersort.dat"
Open filename1 For Output As #1
For i = 0 To 9
Print #1, Val(Text1(i).Text)
Next
Close #1
itask = Shell("a:\sort.exe", vbHide)
phandle = OpenProcess(synchronize, False, itask)
ret = WaitForSingleObject(phandle, infinite)
ret = CloseHandle(phandle)
RichTextBox1.LoadFile filename2, rtfText
End Sub
问题解决!
可以通过API在VB或VBA里实现。
页:
[1]