摘要: 6,引用AnsiStrings单元如果你有必要使用 AnsiLowerCase AnsiCompareStr之类的函数,一定要引用AnsiStrings单元。如果你不引用该单元,即便编译不报错,你实际上是用的还是Unicode版本的函数,会有隐式的转化。不信你打开参数自动完成,看看IDE提示给你的类型是什么?天啊AnsiLowerCase参数竟然还是String,而不是AnsiString。看来D... 阅读全文
posted @ 2010-01-27 17:04 庄园 阅读(6256) 评论(0) 推荐(4) 编辑
摘要: 这两天把一个使用Delphi2007开发的30万行左右的项目,成功升级到了Delphi2010。升级途中很艰辛,总结了 以下经验与大家分享。另外,工程中使用的第三方组件,由于官方没有发布For Delphi2010的更新,我也顺便修改了。有需要的联系我。修改的第三 方组件列表见文章尾部。1,PChar因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指... 阅读全文
posted @ 2010-01-23 00:13 庄园 阅读(7162) 评论(20) 推荐(1) 编辑
摘要: GetModuleFileName举例:function ModuleFileName(Handle: HMODULE): string;var Buffer: array[0..MAX_PATH] of Char;begin SetString(Result, Buffer, GetModuleFileName(Handle, Buffer, Length(Buffer)));end;GetWi... 阅读全文
posted @ 2010-01-22 10:43 庄园 阅读(2056) 评论(2) 推荐(0) 编辑
摘要: 前文已经讲过了OleCtrls.pas是如何内存泄漏以及解决方案,但是我们发现该内存泄漏的问题,早已被TEmbeddedWB发现,TEmbeddedWB在Version 14.67.8版本的解决方案并不修改OleCtrls.pas文件,而是每次执行内存泄漏的地方,额外的写上一句_Release;使得引用计数无条件减少1,该方案有点绕路子,而且会与修正问题本质的方案(修改OleCtrls.pas)发... 阅读全文
posted @ 2009-05-25 15:33 庄园 阅读(4500) 评论(3) 推荐(0) 编辑
摘要: 根据对IE、Maxtron、TT、世界之窗等浏览器的观察,可以肯定目前在所有的语言中如果调用Webbrowser这个ActiveX组件普遍存在内存泄漏问题。Delphi使用Webbrowser引起内存泄漏的原因是在OleCtrls.pas单元GetIDispatchProp和GetIntegerProp函数于对COM对象引用计数的错误处理上。参见OleCtrls.pas源代码:[代码]由于该错误代... 阅读全文
posted @ 2009-05-25 15:21 庄园 阅读(12988) 评论(4) 推荐(0) 编辑
摘要: ---这篇文章之前写的时候没有进行深入地分析,现在被认为是狭义的(因为EmwbBrowser的BUG,错怪RTL了。)。请参看后续文章--- 由于WebBrowser是基于COM技术的ActiveX控件,而Delphi对COM的支持又不尽人意,因此在使用TWebBrowser以及其派生对象都要有这样或那样的异常,错误提示大概都是:“你没有按照上帝的旨意去使用WebBrowser ... 阅读全文
posted @ 2009-05-25 14:46 庄园 阅读(4472) 评论(0) 推荐(0) 编辑
摘要: 概述验证码有时候也叫图形码,是一种阻止软件进行某些自动化行为的技术。被广泛的用于各种系统的帐号注册、登录验证等环节。在一定程度上验证码可以阻止软件自动进行帐号密码猜解、注册等行为。但迫于一些原因,我们需要自动进行上述被“禁止”的行为,这时就有一个课题摆在我们面前:验证码识别技术,也可以叫做图形识别技术、模式识别技术。如今的验证码已不再像互联网初期那么单纯,早期的验证码可以通... 阅读全文
posted @ 2009-05-25 14:33 庄园 阅读(5259) 评论(6) 推荐(0) 编辑