是否可以调整TStringField在Delphi中像TWideStringField一样工作?

我们希望在Delphi 2009和Interbase中使用Unicode,并且发现要将字符编码从WIN1252切换到UNICODE_FSS或UTF8,我们首先必须在所有数据模块中用TWideStringField替换TStringField的所有实例。 对于大约60个数据模块,我们不能简单地在一个周末完成。 我只能看到两种迁移策略选项:

  • 找到一种解决方法,它允许使用现有的TStringField字段而不触发'expected:TWideStringField'错误
  • 要么

  • 删除所有持久字段以避免字符串类型冲突
  • 据我所知,永久数据库字段的字段类型是在某种类的注册表中注册的。 我们可以使用它来让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