Подтвердить что ты не робот

Как проверить, существует ли строка в массиве?

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

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

if ExtString in Extensions then

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

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

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

4b9b3361

Ответ 1

Как вы выяснили, вы не можете проверить строку в массиве String, используя 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; 

Ответ 2

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