Delphi 2010 宽函数与字符串函数
我们目前正在将 Delphi 2007 项目转换为 Delphi 2010。我们已经在使用 Unicode(通过 WideStrings 和 TNT Unicode Controls)。
我原本希望将所有 Wide 函数(例如 WideUpperCase)替换为它们的等效函数(例如 UpperCase),但它们的工作方式不同。例如,WideUpperCase 的工作方式与 UpperCase 不同。 WideUpperCase 正确地将 Campañas 大写,但 UpperCase 将 ñ 保留为小写。
还有其他我应该注意的差异吗?例如,WideFormat 和 Format 的工作方式相同吗?
谢谢
We're currently converting a Delphi 2007 project to Delphi 2010. We were already using Unicode (via WideStrings and TNT Unicode Controls).
I was expecting to replace all Wide functions, e.g. WideUpperCase, with their equivalent, e.g. UpperCase, but they do not work the same way. For example, WideUpperCase works differently from UpperCase. WideUpperCase correctly uppercases Campañas, but UpperCase leaves the ñ in lower case.
Are there any other differences that I should be aware of? e.g. do WideFormat and Format work the same?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该使用 ToUpper 函数从字符单元转换为大写 unicode 字符串。或者,如果您需要支持非 unicode 和 unicode Delphi 版本的通用代码库,您可以使用 AnsiUpperCase - AnsiUpperCase 是 Delphi 2007 及更早版本的 Ansi 函数,以及 Delphi 2009 及更高版本的 unicode 函数。
You should use ToUpper function from Character unit to uppercase unicode strings. Or else you can use AnsiUpperCase if you need to support the common codebase for non-unicode and unicode Delphi versions - AnsiUpperCase is Ansi function for Delphi 2007 and prior, and unicode function for Delphi 2009 and above.
命名确实很糟糕(由于与旧版本保持兼容)。我建议您阅读您可能想要使用的每个字符串函数的 cos 并检查它是否适用于 Unicode。
The naming is really bad (due to keeping compat with older versions). I suggest you read the cos for each string function you might want to use and check if it works with Unicode or not.