I have this code:
我有这个代码:
var
ExtString: string;
const
Extensions : array[0..4] of string = ('.rar', '.zip', '.doc', '.jpg', '.gif');
if ExtString in Extensions then
On the last line, I get an error:
在最后一行,我收到一个错误:
[DCC Error] E2015 Operator ('then') not applicable to this operand type
[DCC错误] E2015运算符('then')不适用于此操作数类型
I think I can not do this, so how can I properly perform my task?
我想我不能这样做,所以我怎样才能正确执行我的任务?
2 个解决方案
#1
19
As you have found you can't check for a String in an Array of String, using in
.
正如您所发现的那样,无法使用in来检查字符串数组中的字符串。
You could use this function instead of the if
statement.
您可以使用此函数而不是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;
You can call it like this.
你可以这样称呼它。
if StrInArray(ExtString,Extensions) then
如果是StrInArray(ExtString,Extensions)那么
The StrUtils.pas
has this already defined.
StrUtils.pas已经定义了这个。
function MatchStr(const AText: string; const AValues: array of string): Boolean;
#2
8
Initialise a TStringList instance from the constant array and use IndexOf().
从常量数组初始化TStringList实例并使用IndexOf()。
#1
19
As you have found you can't check for a String in an Array of String, using in
.
正如您所发现的那样,无法使用in来检查字符串数组中的字符串。
You could use this function instead of the if
statement.
您可以使用此函数而不是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;
You can call it like this.
你可以这样称呼它。
if StrInArray(ExtString,Extensions) then
如果是StrInArray(ExtString,Extensions)那么
The StrUtils.pas
has this already defined.
StrUtils.pas已经定义了这个。
function MatchStr(const AText: string; const AValues: array of string): Boolean;
#2
8
Initialise a TStringList instance from the constant array and use IndexOf().
从常量数组初始化TStringList实例并使用IndexOf()。