试试:
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;
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;
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;
比如它读到了百分之十,我如何知道它读到了百分之十,且如何获取这百分之十的文本。
有些代吗需修改一下就可用,程序已测试 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;