有一文本
d:\test.txt
-----------------
姓名:张三
年龄:12姓名:李四
性别:男
职务:工人......
....
...-------------
我只想把每个人的姓名读出来,而且每个人的资料行数不一样。
读到MEMO1里面.

解决方案 »

  1.   

    var temp : TStrings;
        i:Integer;
    begin
      temp := TStringList.Create;
      temp.loadfromfile(d:\test.txt);
      for i:=0 to temp.count-1 do
      begin
        if pos('姓名:',temp.lines[i])>0 then
          memo1.strings.add(temp.lines[i]);
      end;
    end;
      

  2.   

    错了一点:temp.loadfromfile(‘d:\test.txt’);
      

  3.   

    你可以借助MEMO先把整个文本读入MEMO然后获得每一行的排头信息,如果是姓名开头的就读取该行!
    有问题请发信息到我的E-mail:[email protected]
      

  4.   

    我不的MEMO1里不要‘姓名‘这个字符串,只要‘姓名‘后面的‘张三‘。明白吗?
      

  5.   

    大哥 TSTRINGLIST 里有 lines 吗?
      

  6.   

    To:aquadp(阿凯) 应该是  Temp.Strings[i] 吧。很谢谢你让我知道有 POS 这么一个函数,我在通过COPY函数就可以达到我的目的了,不过每个人的姓名长度不一样,我又该如何做呢?
      

  7.   

    memo1.strings.add(Copy(temp.lines[i], 
                           Pos('姓名:',temp.lines[i])+1, 
                           Length(temp.lines[i]));
      

  8.   

    memo1.strings.add(Copy(temp[i], 
                           Pos('姓名:',temp.lines[i])+1, 
                           Length(temp.lines[i]));
      

  9.   

    你可以参考一下DELETE函数去掉'姓名:',然后截取后面的字符串OR
    COPY(Temp.Strings[i]),6,LENGTH(Temp.Strings[i])-5);//姓名:为5个字符
      

  10.   

    var temp : TStrings;
        i:Integer;
    begin
      temp := TStringList.Create;
      temp.loadfromfile('d:\test.txt');
      for i:=0 to temp.count-1 do
      begin
        if pos('姓名:',temp.Strings[i])>0 then
          memo1.strings.add(copy(temp.Strings[i],length('姓名:') + 1,intmax));
      end;
    end;
      

  11.   

    哦,我记错了(没有调试)
    应该是TEMP.STRINGS[i]