找回密码
 注册
搜索
查看: 933|回复: 23

编程小问题..VBasic达人请进(问题更新,关于文件保存)

[复制链接]
发表于 2006-4-10 21:47:20 | 显示全部楼层 |阅读模式
把原来的内容删了。
-----------以下代码-------------------
Open "e:\计算结果.txt" For Output As #1
Print #1, "正交表如下所示"
Print #1, "Table: l27 (3 ^ 13)"
Print #1, "  dc      D     Np    L         Rsc       Rsy      h     "
For i = 1 To 27
Print #1, Tab(1); l27(i, 1); Tab(9); l27(i, 2); Tab(17); l27(i, 3); Tab(21); l27(i, 4); Tab(31); l27(i, 5); _
Tab(41); l27(i, 6); Tab(51); l27(i, 7);
Write #1,
Next
For i = 1 To 27

Print #1, "*************************************************************************"
Print #1, "管程计算结果:                    "
Print #1, "流通面积Ac(m2):", Tab(30); Left(Ac1(i), 5)
Print #1, "流速Uc(m/s):", Tab(32); Left(Uc1(i), 5)
Print #1, "雷诺准数Rec:", Tab(30); Left(Rec1(i), 5)
Print #1, "普兰特准数Prc:", Tab(29); Left(Prc1(i), 5)
Print #1, "对流传热系数αc(W/(m·℃):", Tab(29); Left(αc11(i), 5)
Print #1, "                                                             "
Print #1, "壳程计算结果:                    "
Print #1, "流通面积Ay(m2):", Tab(30); Left(Ay1(i), 5)
Print #1, "流速Uy(m/s):", Tab(32); Left(Uy1(i), 5)
Print #1, "当量直径de(m):", Tab(30); Left(de1(i), 5)
Print #1, "雷诺准数Rey:", Tab(30); Left(Rey1(i), 5)
Print #1, "普兰特准数Pry:", Tab(30); Left(Pry1(i), 5)
Print #1, "对流传热系数αy(W/(m·℃):", Tab(29); Left(αy1(i), 5)
Print #1, "                                                             "
Print #1, "总传热系数KK(W/(m·℃):", Tab(29); Left(αc11(i), 5)
Print #1, "实际换热面积Af(m2):", Tab(29); Left(Af1(i), 5)
Print #1, "计算换热面积Aj(m2):", Tab(29); Left(Aj1(i), 5)
Print #1, "面积裕量系数YL:", Tab(29); Left(YL1(i), 5)
Print #1, "第"; i; "次计算结束!"

Next
Close #1
-----------------------------------------
假设:计算程序.exe 目录是F:\FF
Q1:能否让生成的 计算结果.txt 自动保存到 F:\FF
也就是和  计算程序.exe 处于同一目录下.并且在程序运行后自动打开  计算结果.txt
Q2:能否自己命名计算结果.txt

PS:最好能写出代码

编这个程序也花了一个星期了, 之前从未接触过VB,
在图书馆借了几本VB资料 都没能找到答案,只好到总部了
 楼主| 发表于 2006-4-10 21:49:03 | 显示全部楼层
第一次用VB,很多基础的东西都没学...
SO, 达人们多多指教~~~

在这里先谢了~!
回复 赞 踩

使用道具 举报

发表于 2006-4-10 21:57:39 | 显示全部楼层
我只会C和Fortran,而且在Linux下编程。对于VB嘛。爱莫能助咯。帮顶,等VB高手。
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-10 22:00:19 | 显示全部楼层
继续等待高人出现!


谢谢deadsea007~!
回复 赞 踩

使用道具 举报

发表于 2006-4-10 23:29:02 | 显示全部楼层
我是个JAVA程序员,对于VB,快忘光了,我看有几点可能有错
1。wc*cc如果等于0(如果是数值),那么出现计算错误
2。result = tc2()中的和tc2方法是否应该在声明时有返回类型
3。 text的最好用String,可变类型最好少用
4。作好进程式编程的VB不是OOP的C++和JAVA,如果想当程序员,最好学习C
回复 赞 踩

使用道具 举报

发表于 2006-4-11 10:28:02 | 显示全部楼层
好像dim放在API之后写比较好吧
回复 赞 踩

使用道具 举报

发表于 2006-4-11 10:30:14 | 显示全部楼层
计算数据的也许应该有gotoerrhandle处理error information
回复 赞 踩

使用道具 举报

发表于 2006-4-11 12:12:23 | 显示全部楼层
Text4.Text = result
是不是该对result做个类型转换?
回复 赞 踩

使用道具 举报

发表于 2006-4-11 16:11:01 | 显示全部楼层
result应该省掉

直接Text4.Text = tc2(tc11, wy1, cy1, ty22, ty11, wc1, cc1)
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-11 18:40:30 | 显示全部楼层
书上的一个例子. 这个则是可以运行的!
输入半径的值后,计算圆的面积。
这个程序要只要输入 一 个半径值就够了。
而我写的则需要输入 七 个已知条件.
根据各个战友提出的错误,已经一一改过并运行,可是都不能得出结果.



option explicit

private function area(R as variant) as variant
area = 3.14 * R * R
end function

private sub text1_change()
dim i as variant
dim result as variant
i = CVar (text1.text)
result = area ( i )
text2.text =result
end sub
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-11 18:49:05 | 显示全部楼层
运行结果.
出口温度tc2 依然没有计算出来..
--------------------------------------
to uncle: wc*cc 都是数值,且都不为0, 关于编程我其实是一窍不通.. 并不是计算机专业。
         学VB 只想把他当作一个工具来使用。
to FF: dim 写在哪都一样吧?
         
to 八位机:例子上没有转换result 数据类型.
回复 赞 踩

使用道具 举报

发表于 2006-4-12 00:19:32 | 显示全部楼层
你的处理数据调用tc2的方法写在了Text4的Change事件里,也就是说要在Text4的内容发生改变的时候这段程序才会运行。但是你又把结果赋给了Text4,所以我推测你“出口温度”标签下的文本框就是Text4,这样的话,你不去改变Text4,就不会计算,所以出口温度tc2算不出来,因为它根本没有算。把这段程序放在一个按钮的事件里,或者放在别的Text的Change事件里试试,某个你前面会添数据的Text,就像你的例子里面用半径的那个Text1一样。
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-12 13:31:06 | 显示全部楼层
Xphi]你的处理数据调用tc2的方法写在了Text4的Change事件里,也就是说要在Text4的内容发生改变的时候这段程序才会运行。但是你又把结果赋给了Text4,所以我推测你“出口温度”标签下的文本框就是Text4,这样的话,你不去改变Text4,就不会计算,所以出口温度tc2算不出来,因为它根本没有算。把这段程序放在一个按钮的事件里,或者放在别的Text的Change事件里试试,某个你前面会添数据的Text,就像你的例子里面用半径的那个Text1一样。
果然是这样!!问题解决了,
因为调用了7个text.text 数值, 在每个text 的change事件里都添加了.就能算出结果。
真是太感谢xphi兄弟了!!
又重新写了代码, 不再定义函数,直接调用各个text.text。

Private Sub Text9_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text10_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text11_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text12_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text14_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text15_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
Private Sub Text16_Change()
Text13.Text = Val(Text11.Text) - Val(Val(Text16.Text) / 3600) * Val(Text10.Text) * ((Val(Text14.Text) - Val(Text12.Text)) / ((Val(Text15.Text) / 3600) * Val(Text9.Text)))
End Sub
回复 赞 踩

使用道具 举报

发表于 2006-4-12 18:33:00 | 显示全部楼层
用变量代替一下吧 看得好晕
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-12 18:46:46 | 显示全部楼层
八位机] 用变量代替一下吧 看得好晕

老师看不懂最好~
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-18 14:57:28 | 显示全部楼层
顶上去!!!!!
回复 赞 踩

使用道具 举报

发表于 2006-4-21 09:04:03 | 显示全部楼层
把第一句改成:
Dim OutputFile As String
OutputFile = App.Path & "\计算结果.txt"
Open OutputFile For Output As #1

在最后加上:
Shell ("notepad.exe " & OutputFile, VbNormalFocus)

如果要用户自己命名计算结果,就放个Text在界面上,把OutputFile = App.Path & "\计算结果.txt"这一句改成OutputFile = App.Path & "\" & Textxx.Text & ".txt"就可以了,Textxx就是你放的那个Text。
回复 赞 踩

使用道具 举报

发表于 2006-4-21 09:07:34 | 显示全部楼层
这些都是最基本的问题吧,建议查一下教科书,应该可以找到答案的。另外多用Google也可以解决很多问题。
回复 赞 踩

使用道具 举报

发表于 2006-4-21 09:21:17 | 显示全部楼层
问一下地说,现在一般的软件编程应该用什么?还有那里可以下载?
回复 赞 踩

使用道具 举报

发表于 2006-4-21 16:53:48 | 显示全部楼层
程序太多了,看哪个比较顺手了
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-22 13:56:21 | 显示全部楼层
Xphi]把第一句改成:
Dim OutputFile As String
OutputFile = App.Path & "\计算结果.txt"
Open OutputFile For Output As #1

在最后加上:
Shell ("notepad.exe " & OutputFile, VbNormalFocus)

如果要用户自己命名计算结果,就放个Text在界面上,把OutputFile = App.Path & "\计算结果.txt"这一句改成OutputFile = App.Path & "\" & Textxx.Text & ".txt"就可以了,Textxx就是你放的那个Text。
呼,终于搞定了..再次感谢!

借的教材是渣..
对于open 和shell两个函数只是提到,根本没详细用法..

象我这样用VB的人,之前未学过,遇到问题时根本不知道搜什么关键词..
so,在这里发帖也是逼不得已啊..
回复 赞 踩

使用道具 举报

 楼主| 发表于 2006-4-22 14:12:16 | 显示全部楼层
菜单:Private Sub output_Click()

End Sub

想让这个菜单output实现按钮:command1一样的功能
Private Sub Command1_Click()
……中间N多代码……
End Sub

一定要把全部command1的代码加到output_click()里面吗?
回复 赞 踩

使用道具 举报

发表于 2006-4-22 14:41:00 | 显示全部楼层
shell可能会有问题,用winexec比较安全
回复 赞 踩

使用道具 举报

发表于 2006-4-22 20:26:16 | 显示全部楼层
将output的Click事件响应函数改为Command1_Click就可以了。
回复 赞 踩

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|MGCN谍海游龙

GMT+8, 2026-11-14 10:07 , Processed in 0.042759 second(s), 5 queries , Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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