0

私はQuickBasicでリバースエンジニアリングを行っており、次のようなコードがあります。

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
4

1 に答える 1

1

GOTOをElseに置き換えることができます。

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

これは同じロジックに従います-ステートメント Elseの代わりになります。GOTO alone

元のコード(QuickBASIC)では、Ifブロックが入力された場合、thenGOTO aloneステートメント以降はすべて無視されます。

ブロックが入力されていない場合If(つまり、> = 1)、Ifブロック以降のすべてが実行されます。

VB.NETコードのElseステートメントは、同じ動作を生成します。<1の場合、最初のブロックが実行され、Elseブロックは無視され、ループは次の増分に進みますi

> = 1の場合、Elseブロックが実行され、ループは次の増分に進みますi

上記は、QuickBASICのラベルがDOSバッチファイルのラベルに似ていることを前提としています。

于 2012-10-27T04:19:33.703 に答える