代码之家  ›  专栏  ›  技术社区  ›  mjn anonym

有没有可能调整TStringField使其像Delphi中的TWideStringField那样工作?

  •  4
  • mjn anonym  · 技术社区  · 15 年前

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

    • 找到一个解决方法,允许在不触发'expected:TWideStringField'错误的情况下使用现有的TStringField字段

    据我所知,持久数据库字段的字段类型是在某种类型的类注册表中注册的。我们能用这个让Delphi相信TStringField对于使用UNICODE\u FSS或UTF8编码的跨数据库字符列是合适的吗?

    或者我们可以使用在这两种情况下都可以与TStringField一起工作的商业dbExpress驱动程序吗?

    另见我的相关问题: Delphi dbExpress and Interbase: UTF8 migration steps and risks?


    2 回复  |  直到 8 年前
        1
  •  2
  •   Martijn Tonies    15 年前

    将TStringField用于unicode字符会给您带来麻烦,其中包含$00,基本上以dbExpress驱动程序结束字符串,因为这些驱动程序接受P(Ansi)字符字符串。使用TWideStringField在dbExpress中使用PWideChar,因此驱动程序需要真正的unicode码点。

    恐怕没有容易的出路。

    推荐文章