如题

解决方案 »

  1.   

    var   F: TextFile;
      S: string;
    begin
      if OpenDialog1.Execute then           
      begin
        AssignFile(F, OpenDialog1.FileName); 
        Reset(F);
        Readln(F, S);                        
        Edit1.Text := S;                     
        CloseFile(F);
      end;
    end;
      

  2.   

    var   F: TStringList;
    begin
      F:= TStringList.Create;
      F.Loadfrom("文件名");
      ...
      F.strings[n].... // n 代表行号,从0开始
      

  3.   

    文本文件不能读取任意行吧
    楼上的也不算,因为是调入了整个文件啦
    var Lines:Tstrings;
    begin
    lines:=TStringList.Create;
    lines.LoadFromFile('');
    end;
      

  4.   

    还是用TString过渡一下procedure TForm1.Button1Click(Sender: TObject);
    var
      sTxt: TextFile;
      s: string;
      line: TStringList;
    begin
      line := TStringList.Create;
      AssignFile(sTxt, 'D:\01.txt');   //假设文件存在
      Reset(sTxt);
      while not eof(sTxt) do
      begin
        Readln(sTxt, s);
        line.Add(s);
      end;
      ShowMessage(line.Strings[Random(line.Count)]);
    end;
      

  5.   

    我觉得调入文本类型文件基本上是调入整个文件的,
    微软的记事就是这样的,其实word也是调入好多页的
    所以当打开比较大的文件的时候就会很慢,尤其是记事本
    如果你想随便调入某行,那就不如不是用文本形式的文件
    使用记录文件了,每行条记录,这样你就可以控制文件指针指向你所要的那条记录(也就是
    你想要的那行)
      

  6.   

    function  GetLine(Const fn:String;A_lineno:integer):String;
    var
      hMap: THandle;
      hFile:integer;
      MapFp: Pointer ;
      fs:DWORD;
      i,LineNo,FirstPtr,len:integer;
    begin
      hFile:=FileOpen(fn,fmOpenReadWrite);
      if  hFile<0 then
      begin
          ShowMessage('file open fail!');
          exit;
      end;
      fs:=GetFileSize(hfile,Nil);
      hMap:=CreateFileMapping(hFile,nil, page_ReadWrite, 0,0,nil);
      if hMap=0 then
      begin
        FileClose(hFile);
        ShowMessage('map file open fail!');
        exit;
      end;
      MapFp:=MapViewOfFile(hMap,File_Map_All_Access,0, 0, 0);
      if MapFp = nil then
      begin
          CloseHandle(hMap);
          FileClose(hFile);
          ShowMessage ('MapFile data pointer failed');
          exit;
      end;
      lineno:=0;
      i:=0;
      FirstPtr:=0;
      while (i<fs)  do
      begin
        if PChar(Mapfp)[i]=#10 then
        begin
           inc(lineno);
           if lineno=a_lineno then
           begin
               len:=i-FirstPtr-1;
               if len>0 then
               begin
                 SetLength(ReSult,len);
                 Move(PChar(Mapfp)[FirstPtr],Result[1],len);
               end;
           end  else
             FirstPtr:=i+1;
        end;
        inc(i);
      end;
       UnmapViewOfFile(MapFp);
       CloseHandle(hMap);
       FileClose(hFile);
    end;
      

  7.   

    注意TString不是万能的尤其是在含有非中文英文数字的字符串中的