[Delphi]リストの文字列検索 TStrings.IndexOf

 

※全てのDelphiで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

サンプル ※説明に必要な部分しか記述していません

IndexOf の使用例、実行例です

var
    jyogai: TStrings;
    l_fol: String;
・・・

begin

・・・

    jyogai := TStringList.Create;
  try

    for i := 0 to FileList.Count -1 do begin

        l_fol := FileList.Strings[i];

//l_fol(対象のフォルダ)がjyogai(除外リスト)にあったらメイン処理を飛ばす
        if jyogai.IndexOf(l_fol) <> -1 then begin
            Continue;
        end;

・・・メイン処理 

    end;

  finally
    jyogai.Free;
  end;

※下記はヘルプからの引用です

function IndexOf(const S: string): Integer; virtual;

リスト内の文字列の位置を返します。

IndexOf メソッドを呼び出すと,文字列 S の位置を取得できます。IndexOf は 0 から始まる文字列のインデックス値を返します。このようにして,S がリスト内の最初の文字列と一致した場合には IndexOf は 0 を返し,S が 2 番めの文字列と一致した場合には IndexOf は 1 を返します。文字列リストにその文字列がない場合,IndexOf は -1 を返します。

メモ: 同じ文字列がリスト内に複数ある場合,IndexOf は最初に見つかった文字列の位置を返します。

●別のサンプルです

下記を実行しますと

procedure TForm1.Button1Click(Sender: TObject);

{あらかじめ
フォーム上に TComboBox, TListBox を配置し

●ComboBox1.Items には

aBde
xyz
012ABC
mnop
ABC


●ListBox1.Items には

ABC
DEF
xyz
dEf
123
def

をセットしています}


var
    i: Integer;

begin

    //実行例でおわかりの通り、大文字小文字の区別はしていません。
    //実行例はこのサンプルの結果であり、区別が必要な場合は別の方法が良いかと思います。

    i := ComboBox1.Items.IndexOf('aBC');
    ComboBox1.ItemIndex := i;

    i := ListBox1.Items.IndexOf('dEf');
    ListBox1.ItemIndex := i;


end;

実行例で、コンボボックスは「aBC」、リストボックスは「dEf」で検索した結果です。

delphi-indexof