Набор строки?

Вы знакомы с этим блоком:

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'); Я хочу использовать что-то вроде этого о ряде строки.
Спасибо.

7
задан ulrichb 6 July 2010 в 12:42
поделиться

2 ответа

Вы можете воспользоваться этим.

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;
8
ответ дан 6 December 2019 в 06:23
поделиться

Наборы реализованы с использованием битовых массивов. Так что нет, у вас не может быть «набора строк». Вместо этого используйте 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; 
11
ответ дан 6 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: