我有这段代码:
var
ExtString: string;
const
Extensions : array[0..4] of string = ('.rar', '.zip', '.doc', '.jpg', '.gif');
if ExtString in Extensions then
在最后一行,我收到一个错误:
[DCC错误] E2015运营商('然后')不适用于此操作数类型
我想我不能这样做,所以我怎样才能正确执行我的任务呢?
答案 0 :(得分:22)
如您所见,无法使用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;
答案 1 :(得分:9)
从常量数组初始化TStringList实例并使用IndexOf()。
答案 2 :(得分:0)
有时候最简单的解决方案并不是最明显的
var
ExtString: string;
const
Extensions : string = ('.rar,.zip,.doc,.jpg,.gif');
if Pos(ExtString, Extensions) > 0 then
答案 3 :(得分:-1)
您可以使用IndexStr
中的函数IndexText
(区分大小写)或System.StrUtils
(区分大小写)在数组中查找字符串并检索索引。
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');