试试:
procedure TForm1.Button1Click(Sender: TObject);
 var kk:TStringList; i:Integer;
begin
  kk:=TStringList.Create;
  kk.LoadfromFile('c:\Scandisk.log');
  self.RichEdit1.Text:=kk.Text;
  i:=Length(self.RichEdit1.Text);
  showMessage(inttostr(i));
  kk.free;end;

解决方案 »

  1.   

    补充:
    procedure TForm1.Button1Click(Sender: TObject);
     var kk:TStringList; i:Integer;
         str:string;
    begin
      kk:=TStringList.Create;
      kk.LoadfromFile('c:\Scandisk.log');
      self.RichEdit1.Text:=kk.Text;
      i:=Length(self.RichEdit1.Text);//读入的程度;
      showMessage(inttostr(i));
      kk.free;
      str:=richedit1.text;//获取目前已经读取的文字放于 Str中
      showMessage(str);end;
      

  2.   

    这和一下子全部装进来有什么区别。我的意思是:假如有一个2M大的文件,将其读入RichEdit,
    比如它读到了百分之十,我如何知道它读到了百分之十,且如何获取这百分之十的文本。
      

  3.   

    看一看或许对你有帮助:
    有些代吗需修改一下就可用,程序已测试 okfunction DoSomething(iCount,Size:Integer;Buf:Pchar):boolean;
      begin               //iCount 本次读的字符个数    
      if Buf<>nil then    // Size 总字符个数
       begin
        showMessage(Buf);
        showMessage('icount= '+IntTostr(icount)+'  '+'Size= '+IntTostr(Size));
        //处理 TRichEdit文本
       end
       else
       showMessage('end');
       result:=true;//result=true 继续读文件 false 完成读取
      end;
    procedure ReadFile(FileName:string;perCount:integer);
    var buf:Pchar; F:File; Size,iCount:Integer;//perCount 每次读的字符个数
    begin
      AssignFile(F,FileName);
      Reset(F,1);
      Size:=FileSize(F);
      GetMem(buf,perCount);
      system.BlockRead(F,buf^,PerCount,iCount);
      if not DoSomething(iCount,Size,Buf) then
       begin
        CloseFile(F);
        FreeMem(buf);
        exit;
       end;
      while(iCount>0) do begin
       system.BlockRead(F,buf^,PerCount,iCount);
       if not DoSomething(iCount,Size,Buf) then
         begin
           CloseFile(F);
           FreeMem(buf);
           exit;
          end;
       end;   CloseFile(F);
       FreeMem(buf);
       DoSomething(0,0,Nil);//Read end signal
    end;
    procedure TForm1.Button2Click(Sender: TObject);
     var buf:Pchar; F:File; Size,iCount:Integer;
    begin
     ReadFile('c:\scandisk.log',100);
    end;