如果读一般的文本,图片格式文件,再写入可以成功,而读exe文件的数据,在写就不行。
得到的文件大小和数据都是对的,但就是写不进去。
当执行到AfxIsValidAddress(szbuf, dwsize, FALSE)时返回FALSE。
该怎么写?

解决方案 »

  1.   

    我是这样打开的:
    Open(m_strFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary)
      

  2.   

    应该是有什么进程在执行这个exe吧。
      

  3.   

    CFile::typeBinary  不能在这里加!这个只用于派生类
      

  4.   

    你换一个exe写试试 以二进制就可以写入的呀..看看用异常扑捉一下 不过可能扑捉不到。。
      

  5.   

    异常就是AfxIsValidAddress(szbuf, dwsize, FALSE)返回FALSE啊!szbuf的内存空间不全在程序的内存空间里面!我是读的其它程序的地址!但是为什么文本或图片格式的能行,exe的就不行呢?
      

  6.   

    绝对可以写!
    Open(m_strFileName,CFile::modeCreate|CFile::modeReadWrite)试试
      

  7.   

    你在写的exe是不是正在执行啊?
    还有就是看看报什么错误。
      

  8.   

    AfxIsValidAddress()这个函数是在CFile::Write里面的!我是写的一个新文件。情况是这样的:程序1打开了一个文件,然后程序2也就是我的程序去读程序1打开的那块有文件数据的内存,现在读出的一般数据可以保存,但如果程序1打开的是exe文件,就不行。
      

  9.   

    先 SetFileAttributes  改变文件的属性
    然后给我写
    一般来说没有问题