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