例如
if(adoquery1.fieldbyname('first_col').asstring) in ('aaa','abc','ddd')
这样,看这个字符串是否是aaa,abc,ddd中的一个,我试过了集合,似乎不可以用string类型,还有别的解决方法吗?

解决方案 »

  1.   

    把三个字符串放到stringlist中  然后用indexof的方法
      

  2.   

    可以举一个例子么,没用过stringlist
      

  3.   

    var
      ls: TStringList;
    begin
      ls := TStringList.Create;
      try
        ls.DelimitedText := 'aaa,abc,ddd';
        ls.Sorted := True;
        if ls.IndexOf(ADOQuery1.FieldByName('first_col').AsString) > -1 then
        begin
          //找到
        end;
      finally
        ls.Free;
      end;
    end;
      

  4.   

    procedure TForm1.btn1Click(Sender: TObject);
    var
      StrList: TStringList;
    begin
      try
        StrList := TStringList.Create;
        StrList.Delimiter := ';';
        StrList.DelimitedText := 'aaa;bbb;ccc';
        if StrList.IndexOf('aaa') > -1 then
          ShowMessage('aaa');
      finally
        StrList.Free;
      end;
    end;
    不过是否有其他更好的方法,其他大侠考虑下?
      

  5.   

    楼上
    try应该在TStringList.Create语句下面
    TStringList 只有在Sorted := True时,IndexOf才会使用折半查找的方式快速查找,否则只是简单地遍历
      

  6.   

    谢谢各位,尤其是wxieyang大侠,结贴!
      

  7.   

    还想问下Delimiter这个方法是delphi7里面才有的吧,delphi5没有啊。。
      

  8.   

    那就这样:
      ls.Text := StringReplace('aaa,abc,ddd', ',', #13#10, [rfReplaceAll])
    或者
      ls.add('aaa');
      ls.add('abc');
      ls.add('ddd');