本帖最后由 chenghongyue 于 2010-11-25 14:36:57 编辑

解决方案 »

  1.   

    用TStringList,用'|'分组,然后根据索引找
      

  2.   


    const
      sString = 'str1|2|str2|33|str3|444|';implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      ts:TStringList;
      i:Integer;
    begin
      ts:=TStringList.Create;
      ts.Delimiter:='|';
      ts.DelimitedText:=sString;
      ShowMessage(ts.Text);
      for i:=0 to ts.Count-1 do
      begin
        if ts[i]=Edit1.Text then Edit2.Text:=ts[i+1];
      end;
    end;
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      s:string;
      list:TStringList;
      function FindStr(str:string):string;
      var
        i:Integer;
      begin
        i := list.IndexOf(str);
        Result := list.Strings[i+1];
      end;
    begin
      list := TStringList.Create;
      s := 'str1|2|str2|33|str3|444|';
      list.Delimiter := '|';
      list.DelimitedText := s;
      ShowMessage(FindStr('str2'));
    end;
      

  4.   

    bdmh大牛太快了,经常我写好代码回帖,发现沙发已经不见了。
      

  5.   

      在Form上面放两个edit,和一个button
      edit1用来输入,edit2用来显示结果。
      button的Click事件中写以下代码
      
      procedure TForm1.Button1Click(Sender: TObject);
    var
      s,strtemp:string;
      sl:Tstringlist;
    begin
      s:='str1|2|str2|33|str3|444|';
      SL:=TStringList.Create;
      ExtractStrings(['|'],['|'],PChar(s),SL);
      strtemp:=trim(edit1.text);
      if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then
      begin
      edit2.text:=sl.strings[sl.IndexOf(strtemp)+1]
      end;
      SL:=TStringList.free;
    end;
      
      

  6.   

    当然应该完善一下,还可以反查,就是输入2得到str1,输入3得到str2
     
      procedure TForm1.Button1Click(Sender: TObject);
    var
      s,strtemp:string;
      sl:Tstringlist;
    begin
      s:='str1|2|str2|33|str3|444|';
      SL:=TStringList.Create;
      ExtractStrings(['|'],['|'],PChar(s),SL);
      strtemp:=trim(edit1.text);
      if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=0 )then
      begin
      edit2.text:=sl.strings[sl.IndexOf(strtemp)+1];
      end
      else if (sl.indexof(strtemp)<>-1) and ((sl.indexof(strtemp) mod 2)=1 ) then
      begin
      edit2.text:=sl.strings[sl.IndexOf(strtemp)-1];
      end;
      SL:=TStringList.free;
    end;  
      

  7.   

    delphi 5 中 可以用 TstringList有  list.Delimiter,list.DelimitedText 这两个属性么,我这里怎么都不能用啊 
      

  8.   

    恩 我试试 list.Delimiter,list.DelimitedText 比较简单易懂嘛,如果不能用也没办法了~~