我用readfile读取一个txt文件,txt的文件内容只有123456一共6个字节
 ReadFile(hFile,pBuf,nFileSize,nReal,nil);之后,重写到文件的后面
 为何写后的txt内容是1234561234  (最后有二个空格),而不是123456123456呢! 部分代码如下: nFileSize:= GetFileSize(hfile,nil);
 if  nFileSize<>0 then begin  
                  GetMem(pBuf, sizeof(BYTE)* nFileSize);   //分配空间
                  pBufTemp:=pBuf;    //保留原始指针位置
                  SetFilePointer(hFile,0,nil,FILE_BEGIN);  
                  ReadFile(hFile,pBuf,nFileSize,nReal,nil);
                  SetFilePointer(hFile,0,nil,FILE_End);
                  WriteFile(hFile,pBuf,nFileSize,nReal,nil);
                  freemem(pBufTemp);
                  CloseHandle(hFile);
end;

解决方案 »

  1.   

    不知道你为什么要来这么一句:pBufTemp:=pBuf;
    跟踪发现1234保存在pBuf里,56保存在pBufTemp里。
      

  2.   

    用静态的数组来读写,看看行不行。
    const MaxBufSize=1024;
    var pBuf:array[0..MaxBufSize-1]of byte;
        hFile:Thandle;
        nFileSize:integer;
        nReal:DWORD;
    begin
      hFile:=CreateFile(PChar('f:\1.txt'),GENERIC_ALL,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL ,0);
      nFileSize:= GetFileSize(hfile,nil);
      if  nFileSize<>0 then
      begin
        SetFilePointer(hFile,0,nil,FILE_BEGIN);
        ReadFile(hFile,pBuf,nFileSize,nReal,nil);
        SetFilePointer(hFile,0,nil,FILE_End);
        WriteFile(hFile,pBuf,nFileSize,nReal,nil);
        CloseHandle(hFile);
      end;
    end;