我读取INI文件里的一项
[set]
dot=1,2,4,6,7,12,15...等等
我读取后要达到dot1=true dot2=true dot4=true dot6=true....的目的。用Dotstr:=g.ReadString('set','dot','-1')读取后,怎么把这个字符串拆分?

解决方案 »

  1.   


    var
      reg: TPerlRegEx;
      List: TStrings;
      i: integer;
    begin
      List := TStringList.Create;
      reg := TPerlRegEx.Create(nil);  reg.Subject := 'aaa,bbb,ccc,ddd';
      reg.RegEx   := ',';   reg.Split(List,MaxInt); { 输入一个最大整数, 表示能分多少就分多少}  ShowMessage(List.Text);
      {返回:
        aaa
        bbb
        ccc
        ddd
      }  for i:= 0 to List.Count -1 do
        (FindComponent('Dot'+List.Strings[i]) as TcxRadioButton)  FreeAndNil(reg);
      List.Free;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      dot: String;
      strlist: TStringList;
    begin
      dot := '1,2,4,6,7,12,15';
      strList := TStringList.Create;
      try
        strList.Delimiter := ',';
        strList.DelimitedText := dot;
        for i:=0 to strList.Count-1 do
        begin
          showmessage(strList[i]);
        end;
      finally
        strList.Free;
      end;
    end;
      

  3.   

    我按楼上的做,为什么说Delimiter是未说明标识符呢?
      

  4.   


      strList := TStringList.Create;
      strList.Delimiter := ',';
      strList.DelimitedText := rtu1;
      for i:=0 to strList.Count-1 do
      begin
          dot:=strtoint(strList[i]);
          data[dot]:=true; //此点是16位数据
      end;
      

  5.   

    对了,我是用的Delphi5,跟这个有关吗
      

  6.   

    DelimitedText  換 Commatext  試下。
      

  7.   

    DelimitedText 不报错了,但Delimiter是未说明标识符。这个有什么替代的?
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      str,str1: String;
    begin
      str := '1,2,4,6,7,12,15';
      if pos(',',str)<>0 then
      begin
        str1 := copY(str,0,pos(',',str)-1);
        str := copY(str,pos(',',str)+1,length(str)-pos(',',str));
      end else
        str1 := str;
    end;
    用pos,copy 一个个去取吧,可以自己写个函数
      

  9.   


    for i:=0 to length(str)do
    begin
        if str[i]<>',' then
        begin
          dot:=strtoint(str[i]);
          data[dot]:=true; //此点是16位数据
        end;
    end;
    我这样写有错没?能实现吗
      

  10.   


      sl:= TStringList.Create;
      try
        sl.Text:= stringreplace('1,2,4,6,8',',',#10,[rfReplaceAll]);
        showmessage(sl.Strings[3]);                                   //第4个
      finally
        sl.Free;
      end;
      

  11.   

    function SplitsElement(sSign: string):string;
    var
      i : Integer;
    begin
      Result := '';
      for i:=1 to Length(sCStr) do
      begin
        if sCStr[i] = sSign then
        begin
          Result := Copy(sCStr,1,i-1);
          Delete(sCStr, 1, i);
          Break;
        end;
      end;end;sString:=SplitsElement(',');
      

  12.   

    for i:= 0 to sl.count -1 do
      begin
        if trim(sl.strings[i]) <> '' then
          data[strtoint(sl.strings[i])]:= true;
      end;
      

  13.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      strlist: TStringList;
    begin
      strlist := TStringList.Create;
      try
        getStr('1,2,4,6,7,12,15',strlist);
        showmessage(strList.Text);
      finally
        strList.Free;
      end;
    end;function TForm1.getStr(str: String;var StrList: TStringList): Boolean;
    var
      str1: String;
    begin
      try
        while not pos(',',str)<>0 do
        begin
          if pos(',',str)<>0 then
          begin
            str1 := copY(str,0,pos(',',str)-1);
            str := copY(str,pos(',',str)+1,length(str)-pos(',',str));
            strList.Add(str1);
          end else
          begin
            str1 := str;
            strList.Add(str1);
            break;
          end;
        end;
        result := true;
      except
        result := false;
      end;
    end;