我的代码效率极低!请高手指点(请尽量详细点)
procedure Tform1.dkfile;
var f:file of byte;size,filsize:longint;
    s:string;y: byte;f1:textfile;
begin
  screen.Cursor:=crhourglass;
  richedit1.Clear ;
  s:=edit1.Text;
  assignfile(f,s);
  reset(f);
  filsize:=filesize(f);
  tmpfiln:=extractfilepath(application.exename)+'tmpfil.tmp';
  assignfile(f1,tmpfiln);
  rewrite(f1);
  try
    for size:=1 to filsize do begin//这个循环效率极低
      s:='';
      read(f,y);
     s:=inttohex(y,2)+' ';//这里效率极低
      Write(f1,s);
    end;
  finally
    closefile(f);
    closefile(f1);
  end;
  try
    richedit1.Lines.LoadFromFile(tmpfiln);//这里效率也极低!
  finally
    screen.Cursor :=crdefault;
  end;
end;
请问如何改进?
好象是用1M缓存读到内存里,显示的时候也用不着写成文件再loadfromfile。
但如何操作?

解决方案 »

  1.   

    如果换作我,就用CreateFile,ReadFile那些API,或者用TFileStream来操作。
      

  2.   

    如果文件比较小(推荐不超过10M),可以用这个,大文件的话,只能分段转换并显示var
      F: TFileStream;
      Buf: array of Char;
      Buf2: array of Char;
    begin
      F := TFileStream.Create('c:\a.bin', fmOpenRead);
      try
        SetLength(Buf, F.Size);
        F.Read(Buf[0], F.Size);
        SetLength(Buf2, F.Size * 2);
        BinToHex(@Buf[0], @Buf2[0], Length(Buf));
        RichEdit1.Text := StrPas(@Buf2[0]);
      finally
        F.Free;
      end;
    end;