Case IndexStr('somename', ['bobby', 'tommy', 'somename', 'george']) of
0: ..code..; // bobby
1: ..code..; // tommy
2: ..code..; // somename
-1: ShowMessage('Not Present'); // not present in array
else
ShowMessage('Default Option'); // present, but not handled above
end;
字符串 此版本区分大小写,因此如果第一个参数是'SomeName',它将采用not present in array路径。使用IndexText进行不区分大小写的比较。 对于旧的 Delphi 版本,分别使用AnsiIndexStr或AnsiIndexText。 感谢@丹尼尔、@The_Fox和@afrazier对这个答案的大部分回答。
6条答案
按热度按时间sczxawaw1#
在Jcl库中,你有StrIndex函数
StrIndex(Index, Array Of String)
,它的工作方式如下:字符串
ecfdbz9o2#
Delphi
Case Statement
只支持序数类型。所以你不能直接使用字符串。但还有其他选择,
pexxcrt23#
@丹尼尔的回答为我指出了正确的方向,但我花了一段时间才注意到“Jcl库”部分和关于标准版本的评论。
在[至少] XE 2和更高版本中,您可以使用:用途:
字符串
此版本区分大小写,因此如果第一个参数是'SomeName',它将采用
not present in array
路径。使用IndexText
进行不区分大小写的比较。对于旧的 Delphi 版本,分别使用
AnsiIndexStr
或AnsiIndexText
。感谢@丹尼尔、@The_Fox和@afrazier对这个答案的大部分回答。
q3qa4bjr4#
在D7和 Delphi 西雅图工作,
字符串
csga3l585#
我使用AnsiStringIndex和作品,但如果你可以转换为数字没有问题:
字符串
ogsagwnx6#
试试这个它使用System.StrUtils
字符串