我正在尝试创建一系列可以获取参数的命令.拿起每个单独的命令我正在使用Select Case这个问题是如果我使用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程序.
编辑,因为它现在不起作用.
我已经尝试了所建议的内容,但我仍然有完全相同的问题.似乎Command.StartsWith和Command.Contains都不起作用,因为如果我尝试输入’Eat Food’,它仍然不会将其视为一个案例.
例:
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,(Len(Command) - 4)) Interaction(Command) Else Output("Use What?") End If Case "Use" Output("Use What?") 'Case Else ' Errors() End Select
没错,你可以保留你的Select Case块,但由于你没有检查String的完全相等,你应该根据你的目标检查Command.Contains(“Eat”)或Command.StartsWith(“Eat”).
侮辱;
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