是否可以调整TStringField在Delphi中像TWideStringField一样工作?
我们希望在Delphi 2009和Interbase中使用Unicode,并且发现要将字符编码从WIN1252切换到UNICODE_FSS或UTF8,我们首先必须在所有数据模块中用TWideStringField替换TStringField的所有实例。 对于大约60个数据模块,我们不能简单地在一个周末完成。 我只能看到两种迁移策略选项:
要么
据我所知,永久数据库字段的字段类型是在某种类的注册表中注册的。 我们可以使用它来让Delphi相信对于使用UNICODE_FSS或UTF8编码的Interbase字符列,TStringField可以吗?
或者我们可以在两种情况下使用与TStringField一起使用的商用dbExpress驱动程序吗?
另请参阅我的相关问题:Delphi dbExpress和Interbase:UTF8迁移步骤和风险?
更新:在所有DFM和PAS文件中用TWideStringField替换所有TStringField后,我们发现现在还需要在大约100个位置乘以TWideStringFields的'Size'属性值四(如果我们使用UTF8)。 所以我开始奖励一种减少手动修复DFM的方法
将TStringField用于unicode字符会给你带来麻烦,它将有$ 00,基本上结束字符串,例如dbExpress驱动程序,因为它们接受P(Ansi)Char字符串。 使用TWideStringField在dbExpress中使用PWideChar,所以驱动程序需要真正的unicode代码点。
恐怕没有简单的出路。
Sergey A Kryukov,'Unicode Controls:VCL能做什么?',德尔福杂志,116(2005年4月),p。 33-43(源代码)Delphi杂志
Unfortunately, the text of the original article is not freely available, but ask me if you have questions.
链接地址: http://www.djcxy.com/p/91051.html
上一篇: Is it possible to tweak TStringField to work like TWideStringField in Delphi?
下一篇: ZeroConf/Bonjour Code that works in Delphi 7 not working in 2009