假如有一条字符串 “ 5#30#6#京DL0008 ”通过什么办法,可以将 “#”号,两边的数据全部取出来赋给一些变量或数组,供其他地方使用?比如,取出的数据应该如下:x1=5
x2=30
x3=6
x4=京DL0008 或也可以付给数组,如:
 
x[1]=5 
x[2]=30 
x[3]=6 
x[4]=京DL0008 
反正读取数据后,能赋给一些变量可供其他地方使用就行。请大哥们,提供一些详细的代码,谢谢了!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      st:Tstringlist; 
      s:array[0..30] of  string; 
      i:integer; 
    begin 
      st:=tstringlist.Create; 
      st.Delimiter:='#'; 
      st.DelimitedText:='5#30#6#京DL0008 '; 
       for i:=0 to 3 do 
        s[i]:=st.Strings[i]; 
        st.Free; 
    end;
      

  2.   

    function GetStrs(str:string):TStringlist;
    var
    ss:TStringlist;
    begin
    ss:=TStringlist.Create;
    ss.Delimiter:='#';
    ss.DelimitedText:=str;
    result:=ss;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    memo1.Lines.Text:=GetStrs('5#30#6#京DL0008 ').Text;
    end;
      

  3.   

    楼上的  hys_427 大哥 ,你做的我看不懂,你的能存数据,不知如何取出来?
      

  4.   

    1楼的兄弟,:procedure TForm1.Button1Click(Sender: TObject); 
    var 
      st:Tstringlist; 
      s:array[0..30] of  string; 
      i:integer; 
    begin 
      st:=tstringlist.Create; 
      st.Delimiter:='#'; 
      st.DelimitedText:='5#30#6#京DL0008 '; 
      for i:=0 to 3 do 
        s[i]:=st.Strings[i]; 
        st.Free; 
    end;有问题,好像循环不对吧?提示有错啊
      

  5.   


    procedure TForm1.Button1Click(Sender: TObject); 
    var 
      st:Tstringlist; 
      s:array[0..3] of  string[30]; 
      i:integer; 
    begin 
      st:=tstringlist.Create; 
      st.Delimiter:='#'; 
      st.DelimitedText:='5#30#6#京DL0008 '; 
      for i:=0 to 3 do 
        s[i]:=st.Strings[i]; 
        st.Free; 
    end; 
      

  6.   

    提示:Build
      [Warning] Unit1.pas(38): For loop control variable must be simple local variable
      

  7.   

    s:array[0..3] of  string[30]; 
      

  8.   

    还有 直接把var 写在 click事件中,也提示有错的,放到上面就好了
      

  9.   


    返回值不是一个TStringlist类型的吗,定义一个TStringlist类型的变量不就行了
    例如:
    procedure TForm1.Button1Click(Sender: TObject); 
    var
    ss:TStringlist;
    begin 
    ss:=GetStrs('5#30#6#京DL0008 ');
    //ss这个字符串列表中存的就是你要的数据
    //例如你要取第一个数5,那就这样
    showmessage(ss[0]);
    //例如你要取第二个数30,那就这样
    showmessage(ss[1]);
    //例如你要取第三个数6,那就这样
    showmessage(ss[2]);
    //例如你要取第四个字符串京DL0008 ,那就这样 
    showmessage(ss[3]);
    //注意,用完ss之后,要释放
    ss.free;
    end;
      

  10.   

    比如
    var
      x:integer;
      str:string;
     
    x:=strtoint(s[0]);
    str:=s[3];
      

  11.   

    大哥,如何读出 s[0]的值 放到 edit1.text 中???
      

  12.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s: String;
      strs :TStrings;
      i :Integer;
    begin
      s := '5#30#6#京DL0008';
      strs := TStringList.Create;
      strs.Delimiter := '#';
      strs.DelimitedText := s;
      for i := 0 to Strs.Count-1 do
        ShowMessage(Strs[i]);
    end;