If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
假如lf=1时
是不是就不执行Call num_load(".")
直接10:
18 个解决方案
#1
是
#2
是这样的
#3
没错.
#4
尽量不用或少用goto
#5
Sub num_load(n As String)
If lf = 1 Then
GoTo 10
End If
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then
GoTo 10
End If
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
20:
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
10:
End Sub
这里面执行完20: 语句之后
返回去执行,还是直接执行10:
If lf = 1 Then
GoTo 10
End If
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then
GoTo 10
End If
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
20:
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
10:
End Sub
这里面执行完20: 语句之后
返回去执行,还是直接执行10:
#6
看你的代码,好乱.逻辑性不强.
能说一说代码的功能吗?
不定有高手能帮你重写.
你的代码也有问题:
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If '这里有 End if
l1 = Len(d_data)
l1 = l1 - 1
End If '这里也有End if 有上一个End if 结果后没有If与此End if 配套,出错.
能说一说代码的功能吗?
不定有高手能帮你重写.
你的代码也有问题:
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If '这里有 End if
l1 = Len(d_data)
l1 = l1 - 1
End If '这里也有End if 有上一个End if 结果后没有If与此End if 配套,出错.
#7
Private Sub Command19_Click()
If cf = 1 Then
GoTo 10
End If
Call num_compute("/")
10:
fuhao = "/"
End Sub
这段代码
假如cf=1
执行了10:
是不是要返回来执行Call num_compute("/")
?
If cf = 1 Then
GoTo 10
End If
Call num_compute("/")
10:
fuhao = "/"
End Sub
这段代码
假如cf=1
执行了10:
是不是要返回来执行Call num_compute("/")
?
#8
咋没逻辑
#9
"这里面执行完20: 语句之后
返回去执行,还是直接执行10:"
-----会直接执行10:
返回去执行,还是直接执行10:"
-----会直接执行10:
#10
这种GOTO跳转是没有必要的:
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
你直接写:
Private Sub Command18_Click()
If lf <> 1 Then Call num_load(".")
End Sub
或者写成:
Private Sub Command18_Click()
If lf = 1 Then Exit Sub
Call num_load(".")
End Sub
不就可以了么,你那种写法简直是自讨苦吃
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
你直接写:
Private Sub Command18_Click()
If lf <> 1 Then Call num_load(".")
End Sub
或者写成:
Private Sub Command18_Click()
If lf = 1 Then Exit Sub
Call num_load(".")
End Sub
不就可以了么,你那种写法简直是自讨苦吃
#11
在VB里面,除了ON ERROR语句后面,其它地方不应该出现GOTO
#12
其实也不尽然,根据实际情况,例如VB中循环没有C里的Continue功能,我常常用GOTO来模似,避免一个长长的IF判断,当然,这些要加注释说清楚的
#13
VB里面是没有Continue, 在C里面Continue是用来提前结束当前循环, 但是在逻辑上,Continue也只等同于一个IF判断,因此是可以避免的.
#14
是的,要少用GOTO,或者尽是不用GOTO
而且GOTO后面所跟的最好也不要用什么10,20之类,最好用一个有意义的词
如跟个有实际意义的词,如GOTO EXITSUB,就表示退出子程序,时间长了后,看到这句一下了就明白是干什么用的
而且GOTO后面所跟的最好也不要用什么10,20之类,最好用一个有意义的词
如跟个有实际意义的词,如GOTO EXITSUB,就表示退出子程序,时间长了后,看到这句一下了就明白是干什么用的
#15
很准确的告诉你 是的
#16
是的
#17
'将楼盖这么高,不怕楼主摔到了.
'下面代码我帮楼主改好了.用什么Goto 啊.
Sub num_load(n As String)
If lf = 1 Then Exit Sub
If d_data = "0" Or tf = 1 Then
d_data = n
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
Exit Sub
Else
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then Exit Sub
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
End Sub
#18
又仔细看了下楼主中间的一大段代码,似乎有种隐隐约约的熟悉感.
想了半天终于想起来哪里眼熟了.
弱问一句:楼主之前是否只接触过APPLE II上的ROM BASIC?
想了半天终于想起来哪里眼熟了.
弱问一句:楼主之前是否只接触过APPLE II上的ROM BASIC?
#1
是
#2
是这样的
#3
没错.
#4
尽量不用或少用goto
#5
Sub num_load(n As String)
If lf = 1 Then
GoTo 10
End If
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then
GoTo 10
End If
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
20:
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
10:
End Sub
这里面执行完20: 语句之后
返回去执行,还是直接执行10:
If lf = 1 Then
GoTo 10
End If
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then
GoTo 10
End If
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
20:
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
10:
End Sub
这里面执行完20: 语句之后
返回去执行,还是直接执行10:
#6
看你的代码,好乱.逻辑性不强.
能说一说代码的功能吗?
不定有高手能帮你重写.
你的代码也有问题:
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If '这里有 End if
l1 = Len(d_data)
l1 = l1 - 1
End If '这里也有End if 有上一个End if 结果后没有If与此End if 配套,出错.
能说一说代码的功能吗?
不定有高手能帮你重写.
你的代码也有问题:
If d_data = "0" Or tf = 1 Then
d_data = n
GoTo 20
End If '这里有 End if
l1 = Len(d_data)
l1 = l1 - 1
End If '这里也有End if 有上一个End if 结果后没有If与此End if 配套,出错.
#7
Private Sub Command19_Click()
If cf = 1 Then
GoTo 10
End If
Call num_compute("/")
10:
fuhao = "/"
End Sub
这段代码
假如cf=1
执行了10:
是不是要返回来执行Call num_compute("/")
?
If cf = 1 Then
GoTo 10
End If
Call num_compute("/")
10:
fuhao = "/"
End Sub
这段代码
假如cf=1
执行了10:
是不是要返回来执行Call num_compute("/")
?
#8
咋没逻辑
#9
"这里面执行完20: 语句之后
返回去执行,还是直接执行10:"
-----会直接执行10:
返回去执行,还是直接执行10:"
-----会直接执行10:
#10
这种GOTO跳转是没有必要的:
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
你直接写:
Private Sub Command18_Click()
If lf <> 1 Then Call num_load(".")
End Sub
或者写成:
Private Sub Command18_Click()
If lf = 1 Then Exit Sub
Call num_load(".")
End Sub
不就可以了么,你那种写法简直是自讨苦吃
Private Sub Command18_Click()
If lf = 1 Then
GoTo 10
End If
Call num_load(".")
10:
End Sub
你直接写:
Private Sub Command18_Click()
If lf <> 1 Then Call num_load(".")
End Sub
或者写成:
Private Sub Command18_Click()
If lf = 1 Then Exit Sub
Call num_load(".")
End Sub
不就可以了么,你那种写法简直是自讨苦吃
#11
在VB里面,除了ON ERROR语句后面,其它地方不应该出现GOTO
#12
其实也不尽然,根据实际情况,例如VB中循环没有C里的Continue功能,我常常用GOTO来模似,避免一个长长的IF判断,当然,这些要加注释说清楚的
#13
VB里面是没有Continue, 在C里面Continue是用来提前结束当前循环, 但是在逻辑上,Continue也只等同于一个IF判断,因此是可以避免的.
#14
是的,要少用GOTO,或者尽是不用GOTO
而且GOTO后面所跟的最好也不要用什么10,20之类,最好用一个有意义的词
如跟个有实际意义的词,如GOTO EXITSUB,就表示退出子程序,时间长了后,看到这句一下了就明白是干什么用的
而且GOTO后面所跟的最好也不要用什么10,20之类,最好用一个有意义的词
如跟个有实际意义的词,如GOTO EXITSUB,就表示退出子程序,时间长了后,看到这句一下了就明白是干什么用的
#15
很准确的告诉你 是的
#16
是的
#17
'将楼盖这么高,不怕楼主摔到了.
'下面代码我帮楼主改好了.用什么Goto 啊.
Sub num_load(n As String)
If lf = 1 Then Exit Sub
If d_data = "0" Or tf = 1 Then
d_data = n
If InStr(d_data, ".") = 0 Then
Text1.Text = d_data + "."
End If
cf = 0
tf = 0
Exit Sub
Else
l1 = Len(d_data)
l1 = l1 - 1
End If
If InStr(d_data, ".") > 0 Then
l1 = l1 - 1
End If
If l1 > 14 Then Exit Sub
d_data = d_data + n
If InStr(d_data, ".") > 0 Then
Text1.Text = d_data
End If
End Sub
#18
又仔细看了下楼主中间的一大段代码,似乎有种隐隐约约的熟悉感.
想了半天终于想起来哪里眼熟了.
弱问一句:楼主之前是否只接触过APPLE II上的ROM BASIC?
想了半天终于想起来哪里眼熟了.
弱问一句:楼主之前是否只接触过APPLE II上的ROM BASIC?