如何得到一个文本文件行数? 不用memo控件
 var
bcpfile:Textfile;
loadfile:string;
..
begin 
   
  assignfile(bcpfile,loadfile);
  reset(bcpfile);
  
end因为要用进度条,所以在处理文本之前就要得到行数! 小弟谢谢大家

解决方案 »

  1.   

    var
    abc:tstringlist;
    begin
    abc:=tstringlist.Create;
    abc.loadfromfile('123.txt');
    zz:=abc.count-1
      

  2.   

    我的文本非常大,用Tstringlist显示out of memory 还有什么解决办法没有啊???救命嘎
      

  3.   

    我的文本非常大,用Tstringlist显示out of memory 还有什么解决办法没有啊???因为是数据库的BCP文本,动辄几百兆
      

  4.   

    这么巨大的文件,你还打算用Memo来处理吗?
      

  5.   

    用TFileStream 或 TmemoryStream打开后,查找 #13#10 的个数,即为行数估计TStringStream也可以吧,不过没试。我这里没有巨型文本。
      

  6.   

    你试试看能不能用worksheet来做判断.
    这个我也不大清楚.
      

  7.   

    反复使用readln函数,直到文件结束,那么使用Readln的次数就是行数了!呵呵
      

  8.   

    用文件的FileSize函数和FilePos函数,同样可以显示打开进度阿
    var
       bcpfile:Textfile;
       loadfile:string;
       s:string;
    begin 
       ...
       assignfile(bcpfile,loadfile);
       ProgressBar1.Min:=0;
       ProgressBar1.Max:=FileSize(bcpfile);
       ProgressBar1.Postion:=0;
       Reset(bcpfile);
       while (FilePos(bcpfile)<FileSize(bcpfile)) do   
          begin
              ReadLn(bcpfile,s); 
              ProgressBar1.Position:=FilePos(bcpfile);
          end;  
       Close(bcpfile);
    end;
      

  9.   

    刚才有BUG
    var
       bcpfile:Textfile;
       loadfile:string;
       s:string;
    begin 
       ...
       assignfile(bcpfile,loadfile); 
       Reset(bcpfile);
       ProgressBar1.Min:=0;
       ProgressBar1.Max:=FileSize(bcpfile);
       ProgressBar1.Postion:=0;
       while (FilePos(bcpfile)<FileSize(bcpfile)) do   
          begin
              ReadLn(bcpfile,s); 
              ProgressBar1.Position:=FilePos(bcpfile);
          end;  
       Close(bcpfile);
    end;
      

  10.   

    如果用readln,初始化需要很长时间
      

  11.   

    to vicky__gao(努力爬吧)  ProgressBar1.Max:=FileSize(bcpfile); progressbar溢出
    如果加上ProgressBar1.Position:=FilePos(bcpfile) 的话速度慢的惊人,原来只需要2分钟检索的变成了2个多小时,文件太大。