TStringList.LoadFromFile();
TStringList.Strings[5]

解决方案 »

  1.   

    先存到TSTRINGLIST里面,然后读
      

  2.   

    考虑ini文件的读取吧?如果是文本文件好像没见过这样的解决办法
    但是可以这样折中程序启动的时候,加载文本文件,然后给每行加一个行标,再写入到一个临时的ini文件中,关闭文本文件。然后你就可以读取固定行的内容了。程序关闭后,再删掉这个临时的ini文件。
      

  3.   

    如果装到TStringList中其实等同于装到内存中,号资源。
    是否可以做一个函数,如下:
    function GetTextLine(szFile:TFileName; var nLine:Integer):string;
    var
      f:TextFile;
      i:Integer;
    begin
      i:=0;
      Assign(f, szFile);
      Reset(f);
      if nLine=-1 then
        while not Eof(f) do
        begin
           Inc(i); 
           ReadLn(f, Result);
        end
      else
        while (not(Eof))and(i<nLine) do
        begin
          Inc(i);
          ReadLn(f, Result);  
        end;
      CloseFile(f);
      nLine:=i;
    end;
    这样当nLine传递-1是将在nLine中返回文本的总行数,
    当传递其他值时返回指定的字符串。
    (未测试!)
      

  4.   

    前二个朋友的方法都是要先读到内存里的,我不想这样,
    to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。
    to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!
      

  5.   

    前二个朋友的方法都是要先读到内存里的,我不想这样,
    to lovingkane(红狐狸) :呵呵,朋友,你试试读十几M的ini文件看看^&^。
    to inbud(清风侠) :我昨晚上已经实现了,思路和你的差不多,我想可能也只有这个方法好一点,关键是不知道f:TextFile;有没有方法直接访问指定行,我想那样肯定要节约些!如果后面没有更好的答案了,分就给你了!
      

  6.   

    如果你的文件不是文本格式可能有更好的方法:结构化存储(像Word文档)
      

  7.   

    可是就是文本文件啊,算了吧,我就用readln算了,只是浪费点时间罢了!谢谢