even-shi 发表于 2010-7-12 16:00

问个关于vb.net的问题(我的Arbeit,大家帮帮忙)

我在vb编程gui.exe时在当前文件夹里创建文件input.csv和output.csv,同时用streamwriter向input.csv写入,output.csv通过另一个calc.exe文件计算后写入。在gui.exe运行结束后同时删除input.csv和output.csv

也就是说我的文件夹里有gui.exe,calc.exe2个文件

如果在自己电脑上运行的时候,硬盘上直接写进input.csv和output.csv没有问题,但是如果在CD上或者其他不可写入的媒介上运行,就会出现报错,然后程序将无法正常关闭

betreuer要求我在写入input.csv之前检查input.csv文件是否exsist,但是这个根本解决不了问题。

虽然我在程序要求里写了运行环境不可以在CD等不可写的媒介上,但是betreuer认为这样就是不完美的,特别是这个程序无法正常关闭是不可以出现的,必须是点击之后出现Fehlermeldung对用户进行提醒,我该怎么操作呢?

谢谢大家

GoldMoon 发表于 2010-7-12 16:47

为什么要通过文件写入再计算再读出,你的gui不可以集成calc.exe的功能,然后把计算的工作全部在gui里完成吗?

even-shi 发表于 2010-7-13 22:54

为什么要通过文件写入再计算再读出,你的gui不可以集成calc.exe的功能,然后把计算的工作全部在gui里完成吗 ...
GoldMoon 发表于 2010-7-12 16:47 http://www.dolc.de/forum/images/common/back.gif
不可以,这是教授要求,必须把计算部分用calc.exe完成,要和benutzoberflaeche分开

GoldMoon 发表于 2010-7-15 10:36

不可以,这是教授要求,必须把计算部分用calc.exe完成,要和benutzoberflaeche分开
even-shi 发表于 2010-7-13 22:54 http://www.dolc.de/forum/images/common/back.gif


汗,刚看到呢,那么你的calc.exe是你自己手动启动,还是你的gui调用的,如果是gui调用的,不可以由calc.exe返回一组计算后的值给你的gui吗?两个程序之间的通信有很多种方式的,嫩一定要把输入和输出值存到文件吗?{:5_389:}还是说这是老师要求的?

GoldMoon 发表于 2010-7-15 10:41

还有那个程序无法退出的问题,你需要对建立新文件那部分语句使用try catch,这样在有exception出现的时候,你让程序跳出一个msgbox提醒出错就ok了。

http://msdn.microsoft.com/de-de/library/fk6t46tz%28VS.80%29.aspx

even-shi 发表于 2010-7-15 13:57

汗,刚看到呢,那么你的calc.exe是你自己手动启动,还是你的gui调用的,如果是gui调用的,不可以由ca ...
GoldMoon 发表于 2010-7-15 10:36 http://www.dolc.de/forum/images/common/back.gif

对的,calc.exe计算后得到的output.csv是当作文件形式可以保存的,哎。。说白了就是教授要求啦
calc是gui调用的,计算后值最后也返回到gui操作界面的

even-shi 发表于 2010-7-15 13:58

还有那个程序无法退出的问题,你需要对建立新文件那部分语句使用try catch,这样在有exception出现的时候, ...
GoldMoon 发表于 2010-7-15 10:41 http://www.dolc.de/forum/images/common/back.gif
我知道可以用try语句,但是问题是我不知道应该用什么条件啊。。。
可以try 文件不能写 这个条件么?

GoldMoon 发表于 2010-7-15 14:12

我知道可以用try语句,但是问题是我不知道应该用什么条件啊。。。
可以try 文件不能写 这个条件么?
even-shi 发表于 2010-7-15 13:58 http://www.dolc.de/forum/images/common/back.gif


try和catch是成对出现的。
你可以在打开文件,关闭文件,读写操作这些地方加上try catch,不知道catch什么的话就直接写 Exception就可以了,看看我给你发的那个链接

even-shi 发表于 2010-7-15 16:36

try和catch是成对出现的。
你可以在打开文件,关闭文件,读写操作这些地方加上try catch,不知道cat ...
GoldMoon 发表于 2010-7-15 14:12 http://www.dolc.de/forum/images/common/back.gif

这个语句我程序里已经用过,用法我了解的
但是我的问题是因为在CD这种上面input.csv无法创建,这样程序就出现自动报错,要避免这个自动报错的情况出现,就是举例我这样写的话:
Try
    [ tryStatements ] // 这里我写什么条件啊?
Catch ex As Eception
    MsgBox("Die Datei input.csv kann nicht einschrieben werden!")   
    e.Cancel = True
End Try

GoldMoon 发表于 2010-7-15 16:40

这个语句我程序里已经用过,用法我了解的
但是我的问题是因为在CD这种上面input.csv无法创建,这样程序 ...
even-shi 发表于 2010-7-15 16:36 http://www.dolc.de/forum/images/common/back.gif

写在创建input.csv那里呀
Try
创建文件   
Catch ex As Eception
MsgBox("Die Datei input.csv kann nicht einschrieben werden!")
    e.Cancel = True
End Try

GoldMoon 发表于 2010-7-15 16:42

哦,当然,你msgbox里就不能写einschrieben werden了,写上不能创建文件就好了

even-shi 发表于 2010-7-15 16:42

写在创建input.csv那里呀
Try
创建文件   
Catch ex As Eception
MsgBox("Die Datei input.csv k ...
GoldMoon 发表于 2010-7-15 16:40 http://www.dolc.de/forum/images/common/back.gif
我创建文件的那段程序是用streamwriter直接写的,也可以用嘛?

even-shi 发表于 2010-7-15 16:45

我把我的部分程序贴出来给你看看,谢谢你拉

GoldMoon 发表于 2010-7-15 16:48

我创建文件的那段程序是用streamwriter直接写的,也可以用嘛?
even-shi 发表于 2010-7-15 16:42 http://www.dolc.de/forum/images/common/back.gif


Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("input.csv", True)
file.WriteLine("Here is the first string.")
file.Close()

你是这么写的吗?

懒一点的话就把上面那些都加到try里面,然后catch里面的msgbox说是读写文件错误就好

勤快一点的话分别对OpenTextFileWriter
writeline
还有file.Close()
都是用try catch,msgbox根据不同情况显示不同错误,比如文件无法找到,文件无法写入,关闭错误等等

even-shi 发表于 2010-7-15 16:49

Dim Gui_main_str As String
      Dim Gui_input_str As String

      Dim input_sw As System.IO.StreamWriter

      Gui_main_str = System.AppDomain.CurrentDomain.BaseDirectory
      Gui_input_str = Gui_main_str + "input.csv"
      
                     input_sw = New System.IO.StreamWriter(Gui_input_str)

                        Zahl_Input("#Funktion = ", Funk_str, input_sw)
                        ..............
                        input_sw.Close()

//////////////////////////////////////////////////////////////////////////////////////
那么我的tryStatements的地方就把
input_sw = New System.IO.StreamWriter(Gui_input_str)

Zahl_Input("#Funktion = ", Funk_str, input_sw)
..............
input_sw.Close()

添进去?

GoldMoon 发表于 2010-7-15 16:50

事实上返回的exception是不同的,懒一点就只用一个exception,但这一段其实有很多情况,有IOException,PathTooLongException

刚才那段是msdn上直接拷贝过来的

http://msdn.microsoft.com/en-us/library/hxwfzt61%28VS.80%29.aspx

even-shi 发表于 2010-7-15 16:51

Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("input.cs ...
GoldMoon 发表于 2010-7-15 16:48 http://www.dolc.de/forum/images/common/back.gif
这样的写法是用在console里面的?

GoldMoon 发表于 2010-7-15 16:52

Dim Gui_main_str As String
      Dim Gui_input_str As String

      Dim input_sw As System.IO ...
even-shi 发表于 2010-7-15 16:49 http://www.dolc.de/forum/images/common/back.gif


恩纳,是哒{:4_293:}

GoldMoon 发表于 2010-7-15 16:53

这样的写法是用在console里面的?
even-shi 发表于 2010-7-15 16:51 http://www.dolc.de/forum/images/common/back.gif

就是举个例子,你根据自己的情况写进去就好了

even-shi 发表于 2010-7-15 16:54

恩纳,是哒
GoldMoon 发表于 2010-7-15 16:52 http://www.dolc.de/forum/images/common/back.gif
我去试试看。。。这个要运行实验一次超麻烦,家里有没有联网电脑,晕死。。

GoldMoon 发表于 2010-7-15 16:56

我去试试看。。。这个要运行实验一次超麻烦,家里有没有联网电脑,晕死。。
even-shi 发表于 2010-7-15 16:54 http://www.dolc.de/forum/images/common/back.gif


嗯,祝嫩好运~{:4_295:}

even-shi 发表于 2010-7-15 16:58

回复 18# GoldMoon


还有个问题,我刚才那个程序是在这个Sub里的
Private Sub Btn_Diagramm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Diagramm.Click

这样的话e.Cancel就没法用了

GoldMoon 发表于 2010-7-15 17:03

回复GoldMoon


还有个问题,我刚才那个程序是在这个Sub里的
Private Sub Btn_Diagramm_Click(ByVal ...
even-shi 发表于 2010-7-15 16:58 http://www.dolc.de/forum/images/common/back.gif


e是什么?你的gui?

GoldMoon 发表于 2010-7-15 17:04

就写在你需要让它退出的地方就好了,一切正常的
还有
catch那里面,就是在msgbox的后面也写一个,我不知道你对于出这个错之后有什么处理,是打算让gui直接退出呢还是说其他处理。如果就打算让gui直接退出了也就需要在catch里写上一个

GoldMoon 发表于 2010-7-15 17:07

回复GoldMoon


还有个问题,我刚才那个程序是在这个Sub里的
Private Sub Btn_Diagramm_Click(ByVal ...
even-shi 发表于 2010-7-15 16:58 http://www.dolc.de/forum/images/common/back.gif

啊,晕,没注意原来是eventargs
你看看这里有个例子

http://msdn.microsoft.com/de-de/library/fk6t46tz.aspx

even-shi 发表于 2010-7-15 17:09

我定义了一个
dim a as system.componentmodel.canceleventargs

这样会出现一个警告,说是
Die a-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten.

even-shi 发表于 2010-7-15 17:10

就写在你需要让它退出的地方就好了,一切正常的
还有
catch那里面,就是在msgbox的后面也写一个,我不知道 ...
GoldMoon 发表于 2010-7-15 17:04 http://www.dolc.de/forum/images/common/back.gif

catch的话就直接程序关闭或当前当前窗口关闭

GoldMoon 发表于 2010-7-15 17:19

catch的话就直接程序关闭或当前当前窗口关闭
even-shi 发表于 2010-7-15 17:10 http://www.dolc.de/forum/images/common/back.gif


啊,我明白了,你那个e是对应某个按钮,然后用来关闭窗体的是吗?
遇到exception这种意外的错误的话,就没有说用户再按什么按钮这种问题,你就直接强制让程序退出就好了,直接用END我觉得就OK了

even-shi 发表于 2010-7-15 17:20

啊,我明白了,你那个e是对应某个按钮,然后用来关闭窗体的是吗?
遇到exception这种意外的错误的话 ...
GoldMoon 发表于 2010-7-15 17:19 http://www.dolc.de/forum/images/common/back.gif

恩,我原来意思就是关闭当前窗体
那我用end试试看,谢谢你~~

GoldMoon 发表于 2010-7-15 17:22

恩,我原来意思就是关闭当前窗体
那我用end试试看,谢谢你~~
even-shi 发表于 2010-7-15 17:20 http://www.dolc.de/forum/images/common/back.gif


嘿嘿,不用客气,一起研究嘛~{:4_276:}
页: [1] 2
查看完整版本: 问个关于vb.net的问题(我的Arbeit,大家帮帮忙)