你会告诉我,如果有一些优势(减少sotorage空间,增加速度等)使用:
resourcestring MsgErrInvalidInputRange = 'Invalid Message Here!';
代替
const MsgErrInvalidInputRange : String = 'Invalid Message Here!';
解决方法
const选项将比resourcestring更快,因为稍后将调用Windows API来获取资源文本。
您可以通过使用一些缓存机制来加快速度。这就是我们在增强型Delphi RTL中所做的工作。
您可以通过使用一些缓存机制来加快速度。这就是我们在增强型Delphi RTL中所做的工作。
如果您需要多次访问资源内容,那么首先将资源重新加载到字符串中是个好主意。
资源的重点是允许i18n(国际化)您的程序。
你有一些版本的Delphi IDE的翻译经理。但它依赖于外部DLL。
您可以使用来自Linux世界的gettext系统,从http://dxgettext.po.dk依赖于外部.po文件。
我们在我们的框架中包含了我们自己的i18n机制,它将翻译和缓存resourcestring文本,并依赖于外部.txt文件(可以使用UTF-8或Unicode文本文件,从Delphi 6到XE)。缓存使得它与const用法一样快。见http://synopse.info/fossil/finfo?name=SQLite3/SQLite3i18n.pas
还有其他开源或商业解决方案。
关于大小存储,资源化存储为UC2缓冲区。所以resourcestring会比Delphi 2009使用更多的内存。由于Delphi 2009,所有的字符串都是unicodestring,即UCS2,所以你不会有更多的存储空间。在所有情况下,文本的存储大小不是应用程序的较大尺寸参数(位图和代码大小对最终的exe有更大的影响)。