6

パラメータを取ることができる一連のコマンドを作成しようとしています。使用している個別のコマンドをそれぞれピックアップするにはSelect Case、これに関する問題は、使用すると「パラメーター」(文字列の 2 番目の部分) を感知できないことCase Elseです。使用しないCase Elseと、間違ったコマンドを処理して必要な手順に送ることができません。

例えば:

Private Sub AllocateType(ByVal Command As String)

    Select Case Command
        Case "Eat"
            'Call Eat procedure
        Case "Use"
            'Call Use procedure
        Case "Quit"

        Case "Pause"

        Case "Go"

        Case Else
            Errors() 'Error handling procedure
    End Select

End Sub

コマンドが「Brrrrr」の場合、 が呼び出されますErrors()。しかし、コマンドが 'Eat Food' であった場合でも、呼び出しが行われ、パラメーターがプロシージャErrors()に渡されません。Eat

今は動かないので編集。 提案されたことを試しましたが、まだまったく同じ問題があります。「Eat Food」に入ろうとしても、まだケースとして認識されないため、機能しないようCommand.StartsWithです。Command.Contains

例:

Select Case Command
    Case Command.Contains("Eat")
        Output("TESTING")
        If Len(Command) > 4 Then
            Command = Mid(Command, 4, (Len(Command) - 4))
            Interaction(Command)
        Else
            Output("Eat What?")
        End If
    Case "Eat"
        Output("Eat What?")
    Case Command.StartsWith("Use")
        If Len(Command) > 4 Then
            Command = Mid(Command, 4, (Len(Command) - 4))
            Interaction(Command)
        Else
            Output("Use What?")
        End If
    Case "Use"
        Output("Use What?")
        'Case Else
        '    Errors()
End Select
4

3 に答える 3

4

構造を維持できますCase

Private Sub AllocateType(ByVal Command As String)

    Select Case True
        Case Command.StartsWith("Eat")
            'Call Eat procedure
        Case Command.StartsWith("Use")
            'Call Use procedure
        Case Command.StartsWith("Quit")

        Case Command.StartsWith("Pause")

        Case Command.StartsWith("Go")

        Case Else
            Errors() 'Error handling procedure
    End Select

End Sub
于 2014-01-05T10:34:56.910 に答える