delphi中可以用IN来判断一个数是否在一个集合中,
比如
for j:=0 to chklistbox.Items.Count-1 do
  begin
    if j in [1,3,7] then
    chklistbox.Checked[j]:=true;
  end;
可以为chklistbox打勾,但是如果[1,3,7]不是这样直接指定的,而是储存在数据库中又该如何操作呢?我打算是把它储存在一个text字段中。也用1,3,7的形式。
但是读出来后怎么写呢?

 if j in [adotable1.fieldbyname('aaa').asstring]这样可以吗?

解决方案 »

  1.   

    字符串中可以用Pos函数或者你从字符串转存到数组中去,然后用in来判断
      

  2.   

    不行,既然在数据库中是逗号分割的,那可以这样:
    for j:=0 to chklistbox.Items.Count-1 do
      begin
         if pos(','+inttostr(j)+',',adotable1.fieldbyname('aaa').asstring)<>0
            or (inttostr(j)+','=copy(adotable1.fieldbyname('aaa').asstring,1,length(inttostr(j))+1) then
          chklistbox.Checked[j]:=true;      
      end;
      

  3.   

    //text := '1,2,3'var
      sList : TStringList;
      i , index: integer;
    begin
      sList := TStringList.Create();
      sList.Delimiter = ',';
      sList.DelimiterText := text;  if(sList.Find('1',index)) then   //-------------查询
        ShowMessage(IntToStr(index));
    end;