您熟悉此块:
Var mySet: Set Of Char; C: Char; begin mySet := ['a', 'b', 'c']; If C In mySet Then ShowMessage('Exists'); end;
有没有办法申报Set Of STRING
?或者是否有类似的代码我可以使用?这个块的重要部分是If C In mySet Then ShowMessage('Exists');
我想使用类似于一组字符串的东西.
谢谢.
使用位数组实现集合.所以不,你不能拥有一套'字符串'.改为使用TStringList,即:
var mySet: TStringList; S: String; begin S := ...; mySet := TStringList.Create; try mySet.Add('a'); mySet.Add('b'); mySet.Add('c'); if mySet.IndexOf(S) <> -1 Then ShowMessage('Exists'); finally mySet.Free; end; end;
你可以利用这个.
type TAnyEnum = (aeVal1, aeVal2, aeVal3); TEnuns = set of TAnyEnum; TAnyMessages: array [TAnyEnum] of String; const MyMessages: TAnyMessages = ('Exists', 'Something else', 'WTF!?'); var MySet : TEnums; begin MySet = [aeVal1, aeVal2]; If aeVal1 in MySet then ShowMessage(MyMessages[aeVal1]); end;
RTL System.StrUtils
单元为此提供了一种非常有趣的方法:
function MatchText(const AText: string; const AValues: array of string): Boolean; overload;
像这样使用它:
if MatchText(sLanguages, ['fr-FR', 'en-GB', 'de-DE', 'it-IT', 'fr-CH', 'es-ES']) then Writeln('found')