DrGraph软件升级:WIN7下的程序BUG修正
2013-04-24 21:02
337 查看
简要说明 | 启动程序出现脚本错误(OK) | 提交人 | DrGraph 2013/04/24 |
处理状态 | 处理完毕 | 同步状态 | |
现象 | 程序启动时,出现脚本错误 | ||
定位及调试过程 | 可以确定,这是起始页面的JavaScript导致的问题 再定位确定为swfobject_modified.js的484行,打开之 对应函数 function setVisibility(id, isVisible) { var v = isVisible ? "inherit" : "hidden"; if (isDomLoaded) { getElementById(id).style.visibility = v; } else { createCSS("#" + id, "visibility:" + v); } } 即getElementById(id).style.visibility = v;出错 屏蔽该行,再运行,正常 |
简要说明 | 程序出现内部已捕获处理的异常 | 提交人 | DrGraph 2013/04/24 | |
处理状态 | 同步状态 | |||
现象 | 程序运行后,日志中记录 <Info msg="Open File failed! ErrorCode:5 " /> <Info msg="出现异常 (null): Failed to get data for 'ServiceType' 抛出异常处:文件 (null) 第 0 行 处理异常处: 文件 ??尮潆浲屳敗卢牥楶散摁牤獥?牯?挮灰 第 85 行 " /> | |||
定位及调试过程 | Open File failed! ErrorCode:5 的原因在于,在WIN7下无法写文件,需要加上管理员权限 Failed to get data for 'ServiceType' 的原因在于,在WIN7无法读取注册表,需要加上管理员权限 乱码的所在: THelper::FormatString(L"出现异常 %s: %s\n\n抛出异常处:文件 %s 第 %d 行\n\n处理异常处: 文件 %s 第 %d 行\n\n", \ __ThrowExceptionName(), ex.Message.c_str(), __ThrowFileName(), \ __ThrowLineNumber(), __FILE__, __LINE__) 即__FILE__写入到其中出现乱码 单独测试一下: THelper::MessageBox( THelper::FormatString(L"出现异常 \n\n抛出异常处:文件 行\n\n处理异常处: 文件 %s 第 %d 行\n\n", \ __FILE__, __LINE__), false); 查帮助,知道:
THelper::MessageBox( THelper::FormatString(L"出现异常 \n\n抛出异常处:文件 行\n\n处理异常处: 文件 %s 第 %d 行\n\n", \ UnicodeString(__FILE__).w_str(), __LINE__), false); 得到结果,达到目标: 最终,如果不以管理员权限运行程序,会记录日志: 如果以管理员权限运行程序,会记录日志: |
简要说明 | 自动属性赋值代码 | 提交人 | DrGraph 2013/04/24 |
处理状态 | OK | 同步状态 | 完成 |
现象 | 经常有以下情况: 有多个控件(如A、B控件) A控件属性修改时,其事件处理函数中会导致B控件的属性也相应赋值 B控件属性修改时,其事件处理函数中会导致A控件的属性也相应赋值 从而导致死循环 | ||
定位及调试过程 | 加上一个全局变量,标志是否正在修改,或允许修改 class TGlobalVariables { … static bool EnableAutoChangeValue; ///< 全局变量:允许自动修改值,主要用途:避免多个控件属性修改时,导致关联控件属性事件触发,出现死循环 }; bool TGlobalVariables::EnableAutoChangeValue = true; // 缺省为true,允许修改 则使用时,首先判断该标志,若不为true,则不处理;然后置该标志为false,避免其它地方再入;处理完成后,恢复该标志。即: if (!TGlobalVariables::EnableAutoChangeValue) return; TRestore(TGlobalVariables::EnableAutoChangeValue, false); 为编码方便,定义一个宏: #define CBW_PREVENT_CHANGE_LOOP \ if (!TGlobalVariables::EnableAutoChangeValue) \ return; \ TRestore(TGlobalVariables::EnableAutoChangeValue, false); 则在使用时,只需在最开始处加上: CBW_PREVENT_CHANGE_LOOP; 即可。 |
相关文章推荐
- DrGraph软件升级:处理BUG_退出程序出错
- [关于DES程序]对前DES1.0源码bug的修正
- DrGraph软件升级:皮肤
- 修正了标准工时软件的一个BUG
- 话单采集测试(第一次更新修正用例部分,更新了程序Bug追加了一些功能)
- 共享WinCE6.0 下的一个软件升级程序
- CSDN Blog小升级,修正bug
- 最近将osx升级到10.9,好多软件不能用,如何骗过安装程序
- C#编写软件自动升级更新程序
- 关于软件自动升级程序的设计方法
- DrGraph软件升级:实现最近使用文档功能
- 软件Release版本异常捕获程序(BugReport)
- CSDN Blog小升级,修正bug
- 话单采集测试(第一次更新修正用例部分,更新了程序Bug追加了一些功能)
- DrGraph软件升级:BCB6转2010
- 软件Release版本异常捕获程序(BugReport)
- Setup Factory 程序升级前彻底删除之前软件版本
- DrGraph软件升级:新建项处理
- DrGraph软件升级:Quick Access Toolbar
- 打开页面win7会自动下载某些程序软件的禁止方法