写了一晚上VB,一时疏忽忘记保存
在调试的时候VB忽然非法操作
谁能告诉我怎样找回已经写过的代码?
在线等,拜托大家了,小弟在此先谢过

解决方案 »

  1.   

    先激活任务管理器,切换到“应用程序”选项卡,找到正在运行的vb程序,结束它,会弹出两个对话框,均按“取消”按钮试试吧,成功与否,看你的运气了
    另外,你可以换台机器,找个文件监视工具,看看在vb的ide中测试时,系统是否生成了临时文件
      

  2.   

    就当买个教训,以后将VB环境设置成“启动程序时保存改变”吧
    VB菜单的“工具”->“选项”->“环境”页签->“启动程序时”选择“保存改变”
      

  3.   

    哈哈,我找回我的代码啦,迫于无奈我先将内存Dump
    然后点击取消使用Visual Stdio 2005 进行调试Unhandled exception at 0x65053978 in VB6.EXE: 0xC0000005: Access violation reading location 0x00000010.然后中断程序停止在这里65053972  mov         eax,dword ptr [ebp-38h] 
    65053975  mov         ecx,dword ptr [eax+8] 
    65053978  mov         edx,dword ptr [ecx+10h] <---问题就出现在这里
    6505397B  mov         dword ptr [ebx],edx 
    6505397D  jmp         65053B3F 
    65053982  lea         ebx,[edi+28h] 
    65053985  mov         dword ptr [ebx],0 发现ecx的地址为0x00000000
    将ecx的地址指向0x0013f2b0(该地址是我在程序中声明的一个动态数组的地址)
    然后继续哈哈,我的VB又恢复正常了,赶紧保存
    大功告成~Yeah~~分析程序代码发现问题出现在这里
    Option Explicit
    Private bytBlob() As Byte
    .......
    Private sub ...()
    .......
    Redim byteBlob(Size) <-多了个"e"
    .......
    End Sub
    然后在使用bytBlob的时候就会出错MSDN上这样解释:
    小心 如果 ReDim 语句所使用的变量在模块级别或过程级别不存在,则该语句就相当于一个声明语句。如果此后在一个更广的范围内又创建了同名的变量,即使使用了 Option Explicit,ReDim 也将使用后声明的这个变量,且不会导致编译错误。为了避免这种冲突,就不应把 ReDim 作为声明语句使用,而只应作为重定义数组大小的语句。一夜的辛苦总算没有白费
    总算可以安心睡觉咯~~HoHo~~
      

  4.   

    不过也谢谢大家rainstormmaster和of123说的也有道理,我找到了VB生成的临时文件,就在当前用户的临时文件夹里名字为VB**.tmp(**是数字),没有什么利用价值,我在内存Dump中也找到了同样的信息
    但是只有些变量名没有改变其他的程序代码好像已经被某种方法转译了