当 读到0xFEB03EC这个偏移的时候 就认为是文件尾 跳过4个字节后可以继续读。不知道是什么bug!

解决方案 »

  1.   

    本帖最后由 happyparrot 于 2010-12-09 21:58:48 编辑
      

  2.   

    //文件打开模式 将 &csfile 作为形参 传递给sfile代码略
    CSFile.Open(TEXT("数据目录.wdf"),CFile::modeRead);
                     WDK_FILE_HEAD WdfFile;        //文件长度 tem2=0xFEB2127;        int tem2=SFile->GetLength();            
            //按以下文件偏移设置文件不能获得数据 汇编下跟踪发现read返回值为0 查msdn发现0 表示文件结尾 
             //而且文件偏移在0xFEB03EC前读取数据 read都认为0xFEB03EC是文件尾 read返回值就是文件偏移到0xFEB03EC的字节数
    SFile->Seek(0xFEB03EC,CFile::begin);
    SFile->Read(&WdfFile,sizeof(WDK_FILE_HEAD));
          //向后移动4个字节文件指针后 可以正常获得数据 汇编下跟踪返回值正常
            SFile->Seek(0xFEB03F0,CFile::begin);  
    SFile->Read(&WdfFile,sizeof(WDK_FILE_HEAD));
      

  3.   

    CFile::modeCreate   Directs the constructor to create a new file. If the file exists already, it is truncated to 0 length.CFile::modeNoTruncate   Combine this value with modeCreate. If the file being created already exists, it is not truncated to 0 length. Thus the file is guaranteed to open, either as a newly created file or as an existing file. This might be useful, for example, when opening a settings file that may or may not exist already. This option applies to CStdioFile as well.CFile::modeRead   Opens the file for reading only.CFile::modeReadWrite   Opens the file for reading and writing.CFile::modeWrite   Opens the file for writing only.CFile::modeNoInherit   Prevents the file from being inherited by child processes.CFile::shareDenyNone   Opens the file without denying other processes read or write access to the file. Create fails if the file has been opened in compatibility mode by any other process.CFile::shareDenyRead   Opens the file and denies other processes read access to the file. Create fails if the file has been opened in compatibility mode or for read access by any other process.CFile::shareDenyWrite   Opens the file and denies other processes write access to the file. Create fails if the file has been opened in compatibility mode or for write access by any other process.CFile::shareExclusive   Opens the file with exclusive mode, denying other processes both read and write access to the file. Construction fails if the file has been opened in any other mode for read or write access, even by the current process.CFile::shareCompat   This flag is not available in 32 bit MFC. This flag maps to CFile::shareExclusive when used in CFile::Open.CFile::typeText   Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only).CFile::typeBinary   Sets binary mode (used in derived classes only).
    CFile::osNoBuffer   The system opens a file with no system caching. For more information see FILE_FLAG_NO_BUFFERING in CreateFile in the Platform SDK.CFile::osWriteThrough   The system writes through any intermediate cache and goes directly to disk. For more information see FILE_FLAG_WRITE_THROUGH in CreateFile in the Platform SDK.CFile::osRandomAccess   A file is accessed randomly. The system can use this as a hint to optimize file caching.CFile::osSequentialScan   A file is accessed sequentially from beginning to end. The system can use this as a hint to optimize file caching. For more information see FILE_FLAG_SEQUENTIAL_SCAN in CreateFile in the Platform SDK.
      

  4.   

    CFile::modeRead || CFile::typeBinary
      

  5.   

    谢谢楼上这些热心的朋友 加上用二进制可以了
    9楼的兄弟  方法稍微修正下: 
    CFile::modeRead|CFile::typeBinary
      

  6.   

    请问你知道如何把位图的灰度值保存为txt文件吗?我在做这个,位图为灰度图像,8位,谢谢!