Как проверить, существует ли строка в массиве? - PullRequest
15 голосов
/ 12 июня 2011

У меня есть этот код:

var
  ExtString: string;
const
  Extensions : array[0..4] of string = ('.rar', '.zip', '.doc', '.jpg', '.gif');

if ExtString in Extensions then

В последней строке я получаю сообщение об ошибке:

[Ошибка DCC] E2015 Оператор («затем») не применим к этому типу операнда

Я думаю, что не могу этого сделать, так как я могу правильно выполнить свою задачу?

Ответы [ 2 ]

22 голосов
/ 12 июня 2011

Как вы обнаружили, вы не можете проверить строку в массиве строк, используя in.

Вы можете использовать эту функцию вместо оператора if.

function StrInArray(const Value : String;const ArrayOfString : Array of String) : Boolean;
var
 Loop : String;
begin
  for Loop in ArrayOfString do
  begin
    if Value = Loop then
    begin
       Exit(true);
    end;
  end;
  result := false;
end;

Вы можете назвать это так.

if StrInArray(ExtString,Extensions) then

У StrUtils.pas это уже определено.

function MatchStr(const AText: string; const AValues: array of string): Boolean; 
9 голосов
/ 12 июня 2011

Инициализируйте экземпляр TStringList из константного массива и используйте IndexOf ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...