博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年2月27日

摘要: 最近很少上论坛,这几次发现好几个问题都是围绕如何使用DLL中的接口而展开的。问题描述:具体问题就是在隐式使用接口变量后,在FreeLibrary执行后,就会出现一个非法访址的错误。这个错误的原因就是在FreeLibrary后,DLL以的代码均为不可用状态,而在代码执行完整个过程后,VCL要对RTL类型的数据进行清理。而在清理过程中肯定要对接口进行减1并进行释放相关对象。而对象代码已从进程空间卸载,故报非法访址错误!解决方法:所以要想解决该问题,就应该把DLL调用过程放到一个单独的过程中,其目的就是让调用完毕后,让VCL来清理接口。清理完毕后返回后,再调用FreeLibrary来从进程空间中卸载 阅读全文

posted @ 2013-02-27 23:28 对镜弹箜篌 阅读(2791) 评论(1) 推荐(0)

摘要: Bug表现:用XE3 FireMonkey写的带有输入框(TEdit、TMemo等等)的程序,在64位系统下运行并且调用32位输入法的时候,均无法输入任何中文信息,而原生的64位输入法就没问题。我测试了XE3 Update1、Update2都有这个Bug。调试了半个小时,发现问题出在FMX.Platform.Win.pas这个函数:WMImeComposition函数最后有这样几行 //Pressed ESC if (AForm.Focused <> nil) and Supports(AForm.Focused, ITextServiceControl, TSObj) then 阅读全文

posted @ 2013-02-27 18:32 对镜弹箜篌 阅读(448) 评论(0) 推荐(0)