开一个缓冲区是一个好办法。还可以使用流方式来读写文件。这是Delphi帮助中使用fileread把文件读入缓冲区的例子:
procedure TForm1.Button1Click(Sender: TObject);var
  iFileHandle: Integer;
  iFileLength: Integer;
  iBytesRead: Integer;
  Buffer: PChar;
  i: Integer
begin
  if OpenDialog1.Execute then
  begin
    try
      iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
      iFileLength := FileSeek(iFileHandle,0,2);
      FileSeek(iFileHandle,0,0);
      Buffer := PChar(AllocMem(iFileLength + 1));
      iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
      FileClose(iFileHandle);      for i := 0 to iBytesRead-1 do
      begin
        StringGrid1.RowCount := StringGrid1.RowCount + 1;
        StringGrid1.Cells[1,i+1] := Buffer[i];
        StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
      end;
    finally
      FreeMem(Buffer);
    end;
  end;
end;

解决方案 »

  1.   

    先问一句,pchar 和 byte的区别,如果有的话怎么把pchar转成byte呀?
      

  2.   

    用TFileStream来操作,你的打开方式需要把文件完全载入内存!
      

  3.   

    可是我需要对读出来的之进行加密呀,然后我在写到另外一个文件中去,不过我还是希望ehom(?!)能给一段代码关于TFileStream的,我好学习一下  :)
      

  4.   

    用TFileStream
    先create
    然后loadfromfile
    postion:=0;//定位
    read or readbuffer
    加密
    position-1
    把加密完的数据写回到流
    可以用write
    具体可以参看帮助pchar是一个指针,大小为4byte
    与byte毫无关系
    要转换也可以
    p:pchar;
    b:byte;
    b:=ord(p^);
    b:=ord((p+1)^)
    ...