delphi 如何检查数组中是否存在字符串?

bqjvbblv  于 2022-11-23  发布在  其他
关注(0)|答案(3)|浏览(501)

我有这样的代码:

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

if ExtString in Extensions then

在最后一行,我得到一个错误:
[DCC错误] E2015运算符('then ')不适用于此操作数类型
我想我做不到这一点,那么我怎样才能正确地执行我的任务呢?

des4xlb0

des4xlb01#

正如你所发现的,你不能使用in检查String数组中的String。
您可以使用此函数代替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;
83qze16e

83qze16e2#

从常量数组初始化TStringList示例并使用IndexOf()。

laximzn5

laximzn53#

您可以使用System.StrUtils中的函数IndexStr(区分大小写)或IndexText(不区分大小写)来查找数组中的字符串并检索索引。

var
  ExtString: string;
const
  Extensions : array[0..4] of string = ('.rar', '.zip', '.doc', '.jpg', '.gif');
begin
  if (IndexStr(ExtString, Extensions) <> -1) then
    ShowMessage('Finded')
  else
    ShowMessage('Not finded');

Link to help in docwiki from embarcadero

相关问题