我想从一个网页源代码字符串s中提取出一部分数据字符串d.d的前后字符串 分别是prestr和nextstr.怎么写这个函数?
我用pos和mid组合来写,结果总是不正确.
我的函数片断:function getdata(s:string,prestr:string,nextstr:string,d:string):string;
var
pre,next:integer;begin
  
  pre:=pos(prestr,s)+length(d) ;
  next:=pos(nextstr,s)-1;  getdata:=midstr(s,pre+1,next-pre);end;这个返回值和原来位置的字符串相差很多位置---具体的说是向后移动了很多位置,这是为什么?
请问还有更好的高效率的方法吗?谢谢你。

解决方案 »

  1.   

    直接使用tstringlist
    procedure TForm1.Button2Click(Sender: TObject);
    var
     a : TStringList;
     i : integer;
    begin
       a := TStringList.Create;
       a.Delimiter := '.';
       a.DelimitedText := 'abcd.12345';
       for i := 0 to a.Count-1 do
         showmessage(a[i]);
       a.Free;
    end;
      

  2.   

    刚才的代码原来的是这样的,我贴错了。
    function  getdata(s:string;prestr:string;nextstr:string):string;  
    var  
    pre,next:integer;  
     
    begin  
         
       pre:=pos(prestr,s)+length(prestr)  ;  
       next:=pos(nextstr,s)-1;  
     
       getdata:=midstr(s,pre+1,next-pre);  
     
    end;