文件大小 500M
每行格式如下:
a|bb|cc|dd|ee|需要要一行一行的处理.
请教一下高手.怎么处理.

解决方案 »

  1.   

    你读一读delphi5开发人员指南里面的虚拟内存一节吧
      

  2.   

    是的txt.是从数据库里导出来的.
    有啥函数不将文件读入内存操作没?一行一行的读.
      

  3.   

    TStringList读整个文件,
    再用另一个stringlist,使用DelimitedText来分割一行中的各个数据。
      

  4.   

    有500M的文件?
    这样太夸张了吧
    不太可能
    当然,如果需要一行行的读,还是比较容易的:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      txtStrList : TStrings;
      i : Integer;
    begin
      txtStrList := TStringList.Create;
      txtStrList.LoadFromFile('E:\Document\user.txt');
      for i := 0 to txtStrList.Count - 1 do
      begin
        showmessage(txtStrList.Strings[i]);
      end;
    end;
      

  5.   

    //type
    //        MyArrayString = array of string;
    function extractstrings(source:string;tag:string;var len:integer):MyArrayString;
    var
            temp:string;
            n,j:integer;
    begin
            n:=0;
            j:= Pos(tag,source);
            while j>0 do
            begin
                    n:=n+1;
                    setLength(result,n);
                    temp:=copy(source,1,j-1);
                    result[n-1]:=temp;
                    source:=copy(source,j+1,length(source)-j);
                    j:= Pos(tag,source);
            end;
            len:=n;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      txtStrList : TStrings;
      i,len : Integer;
      tmpArray:MyArrayString;
    begin
      txtStrList := TStringList.Create;
      txtStrList.LoadFromFile('E:\Document\user.txt');
      for i := 0 to txtStrList.Count - 1 do
      begin
        tmpArray:=extractstrings(txtstrList[i],'|',len);
        ...
      end;
    end;
      

  6.   

    用文件流打开,取出1M的内存作为缓存Buffer,然后打那1M Buffer的主意。Buffer的数据里,只要你遇到#13的话,你就作为下一行的标志。一行中,你只要看一下,是不是|符号,如果是,作为一个数据单元取出,该干嘛干嘛。如果Buffer的数据出现只是取得一行中的前面N个字符,已经读完,那么将那N个字符,作为Buffer的前面几个字符,然后再从文件流里是从数据是从: Buffer + N的位置开始读Loop...
    如果想简单的话:
    var
     S: string;
     AssignFile(F, FileName);
      Retset(F);
    while not Eof do
    begin
      Readln(F, S);
      ....
    end;这样简单,速度也不会很慢。
      

  7.   

    使用MDAC中的Jet 4.0引擎,可以在ADO中使用这种方法可以把文件当作数据库来操作,可以把文件内容读取到TADODataset中,
    然后操作数据集就可以了。
      

  8.   

    我导入sql 2000后,一个select命令后.就显示超时了.