请教一个问题
如何读取文本中指定字段的数据?
例如文本中有如下字段
姓名 年龄 籍贯 性别
张三 14   重庆 男
李斯 45   山西 男
其中分割符号为空格,现在我只需要姓名和籍贯两个字段的信息,然后导入到stringgrid中,该怎么实现?

解决方案 »

  1.   

    function TForm1.Split(s, t: string): TStringList;
    begin
      Result := TStringList.Create;
      while Pos(t, s)>0 do
      begin
         Result.Add(Copy(s, 1, Pos(t, s)-1));
         Delete(s, 1, Pos(t, s));
      end;
      if Length(s)>0 then Result.Add(s);
    end;将字符串分离为4段,然后只要MyStringList[0]和MyStringList[2]就可以了
      

  2.   

    楼上的大侠,你可能误解我的意思了,我给出的文本实例太简单了,但是我现在遇到的情况是我根本不能确定文本中到底有多少个字段,可能有5个,或则10个,这个都不确定的,因此这个字段数是动态的,假如字段有i个,现在用户需要第m和第n个字段的信息,m,n<i,然后导入到stringgrid中,应该怎么实现?
    最好有代码,不够可以加分!  
      

  3.   

    i不确定,m和n难道也不确定吗?
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      aa,bb:tstringlist;
      i:integer;
    begin
      aa:=tstringlist.Create;
      bb:=tstringlist.Create;
      aa.LoadFromFile('c:\test.txt');
      for i:=0 to aa.Count-1 do
      begin
        bb:=SplitString(aa.Strings[i],' ');
        stringgrid1.Rows[i]:=bb;
      end;
      aa.Free;
      bb.Free;
    end;//其中splitstring为:function SplitString(const source,ch:string):tstringlist;
    var
      temp:string;
      i:integer;
    begin
      result:=tstringlist.Create;
      temp:=source;
      i:=pos(ch,source);
      while i<>0 do
      begin
        result.Add(copy(temp,0,i-1));
        delete(temp,1,i);
        i:=pos(ch,temp);
      end;
      result.Add(temp);
    end;