2012-10-27 71 views
0

我在QuickBasic逆向工程,我有这样的代码:如何跳转到下一个我在For..Next Loop?

FOR i = star TO fin 
    IF a < 1 THEN 
    CALL clrbot 
    COLOR 15 
    PRINT force$(side); " army in "; city$(armyloc(i)); " is CUT OFF !"; 
    TICK turbo! 
    GOTO alone 
    END IF 
    size = size + 1 
    max = 11: IF LEN(armyname$(i)) < 11 THEN max = LEN(armyname$(i)) 
    mtx$(size) = LEFT$(armyname$(i), max) 
    array(size) = i 
alone: 
NEXT i 

我想摆脱线的标签(单独)的,而是做这样的事情:

IF a < 1 THEN 
    CALL clrbot 
    COLOR 15 
    PRINT force$(side); " army in "; city$(armyloc(i)); " is CUT OFF !"; 
    TICK turbo! 
    NEXT i 
    END IF 
+0

可能重复的[VB.NET - 如何移动到下一个项目For Each Loop?](http://stackoverflow.com/questions/829689/vb-net-how-to-move-to-next- item-a-for-each-loop) –

+1

如果Else应该这样做。 – Tim

+1

您可以使用继续以跳到循环的下一个迭代。 –

回答

1

你可以用一个人换掉的GOTO:

For i = star To Fin 
    If a < 1 Then 
     ' Do something 
    Else 
     ' Do Something else 
    End If 
Next 

这将遵循同样的逻辑 - 在Else采取的地方210声明。

在原始代码(QuickBASIC)中,如果输入If块,则会忽略在GOTO alone之后的所有语句。

如果未输入If块(即a> = 1),则执行If块后的所有内容。

VB.NET代码中的Else语句会产生相同的行为。如果一个< 1,第一个块将被执行并且Else块将被忽略,循环将前进到下一个增量i

如果a> = 1,则将执行Else块,然后循环将前进到下一个增量i

上面假设QuickBASIC中的标签与DOS批处理文件中的标签相似。

相关问题