代码如下:
var
  iFileHandle: Integer;
  iFileLength: Integer;
  iBytesRead: Integer;
  Buffer: PChar;
  i: Integer;
  str:String;  begin
       iFileHandle := FileOpen('C:\test.t', 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
        str := str + IntToStr(Integer(Buffer[i]));
      end;end;
其他试了tmemorystream啥的,总也不对!一个一个读可以,整个读总不行,是不是没设成二进制模式,遇到结束符了?

解决方案 »

  1.   

    http://www.moon-soft.com/program/bbs/readelite1751.htm
      

  2.   

    var
      iFileHandle: Integer;
      iFileLength: Integer;
      iBytesRead: Integer;
      Buffer: array of Byte;
      i: Integer;
      str:String;
    begin
      iFileHandle := FileOpen('C:\test.t', fmOpenRead);
      iFileLength := FileSeek(iFileHandle, 0, 2);
      FileSeek(iFileHandle, 0, 0);
      SetLength(Buffer, iFileLength);
      iBytesRead := FileRead(iFileHandle, Buffer[0], iFileLength);
      FileClose(iFileHandle);
      str := '';
      for i := 0 to iBytesRead - 1 do
      begin
        str := str + IntToStr(Buffer[i]);
      end;
      ShowMessage(str);
      Buffer := nil;
    end;
      

  3.   

    iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);  <-- delphi 中用Buffer参数,不能直接传递指针,而是需要传递指针所指的位置。所以改成这样吧:iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
      

  4.   

    为什么都不用 TFileStream ?
      

  5.   

    答楼上:用不习惯,又没什么时间学,还是api看着亲切
      

  6.   

    http://www.moon-soft.com/program/bbs/readelite1751.htm