web-dev-qa-db-ja.com

文字列が配列に存在するかどうかを確認するにはどうすればよいですか?

私はこのコードを持っています:

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

if ExtString in Extensions then

最後の行で、エラーが発生します。

[DCCエラー] E2015演算子( 'then')はこのオペランドタイプには適用されません

これはできないと思いますが、どうすれば適切にタスクを実行できますか?

17
maxfax

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; 
_
23
Robert Love

定数配列からTStringListインスタンスを初期化し、IndexOf()を使用します。

9
Misha