看得动vb的请过来,这段程序的<font color=red>逻辑</font>顺序是。。。(50分)

  • 主题发起人 千中元
  • 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
rte.RecordAutoOverride = True
If Err.Number = -1072824235 then
MsgBox "要转换的文件只能是以下系列文件:*.mp3,*.wai,*,avi"
Labstatus.Caption = ""
Exit Sub
End If

If Err.Number then
MsgBox ("您选的转换模式不合适。 ") &amp;
Err.Description
Labstatus.Caption = ""
Exit Sub
End If
MsgBox Err.Description
On Error Resume Next
rte.RecordAutoStart = False
rte.start
大致意思是"开始转换,如果转换有错误...."
如果有错误怎样? 代码里有Exit,有Resume。到底该是
try except呢还是try finnally.
 
On Error Resume Next
是碰到错误时,继续进行。也可以判断错误的类型,在处理
 
On Error Resume Next//如果有错下面的语句将跳过不处理。
rte.RecordAutoStart = False
rte.start
可能相当于:
if Err.Number<>0 then

rte.RecordAutoStart = False
rte.start
endif
我不懂VB
 
exit sub 是结束整个子程序。
resume next
我估计在你给的代码之前还有一个FOR 的循环,表示出错是跳出本次循环,
进入下一个循环,不知道是否如此,你再看看吧。
 
听到weicong 兄最后一句话我差点爬下。。不过东西还没做完。继续。
另外我发现vb代码中(以前也是没看过vb),err出现的很随意(至少这份代码中是这样)
delphi用一个try
..
except
if error.number=..
exception.create('')
如果是delphi代码,知道是try哪一部分,而这个vb的没有注释和文档的代码,
看来看去不知道到底是哪一部分异常了才显示。
请继续讨论
 
F8单步跟踪试试。把 On Error Resume Next 去掉
 
sportsman : 9494
 
From MSDN
On Error GoTo line
启动错误处理程序,且该例程从必要的 line 参数中指定的 line 开始。
line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到 line,激活错误处理程序。
指定的 line 必须在一个过程中,这个过程与 On Error 语句相同; 否则会发生编译时间错误。
On Error Resume Next
说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,
并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。
On Error GoTo 0
禁止当前过程中任何已启动的错误处理程序。
On Error Resume Next 会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近
一次调用含有 On Error Resume Next 语句的过程的语句继续运行。这个语句可以置运行时错误
于不顾,使程序得以继续执行。可以将错误处理程序放置在错误发生的地方,而不必将控件传输
到过程中的其它位置。在调用另一个过程时,On Error Resume Next 语句成为非活动的,所以,
如果希望在例程中进行嵌入错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。
注意 当处理在访问其它对象期间产生的错误时,与其使用 On Error GoTo 指令,
不如使用 On Error Resume Next。每次和对象打交道,在不知道用代码访问哪个对象时,
检查一下 Err 都会打消这种疑虑。可以确定是哪个对象产生错误(Err.Source 中指定的对象),
也可以确定是哪个对象将错误代码放在 Err.Number 中。

 
VB中错误处理与delphi差别很大,
On Error ...的意思就是“如果发生错误...”
resume:把发生错误的代码再执行一次
resume next:执行发生错误的代码的下一句
如果出错,err 对象中就存储错误信息,
err.number:错误号
err.description:错误描述
VB中,true=-1
直译这段代码结构应该是这样的(语法就不改了):
try
rte.RecordAutoOverride = True
// On Error Resume Next
try
rte.RecordAutoStart = False
finaly
rte.start
end;
except
If Err.Number = -1072824235 then
begin
MsgBox "要转换的文件只能是以下系列文件:*.mp3,*.wai,*,avi"
Labstatus.Caption = ""
Exit Sub
End

If Err.Number then
MsgBox ("您选的转换模式不合适。 ") &amp;
Err.Description
Labstatus.Caption = ""
Exit Sub
End If
MsgBox Err.Description
end
 
晚了给你1分。呵呵
 
顶部