gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:34:24 27 4
gpt4 key购买 nike

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

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

  • 删除所有持久字段以避免字符串类型冲突

据我所知,持久数据库字段的字段类型是在某种类注册表中注册的。我们可以使用它来让 Delphi 相信 TStringField 对于具有 UNICODE_FSS 或 UTF8 编码的 Interbase 字符列来说是可以的吗?

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

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

<小时/>

更新:在所有 DFM 和 PAS 文件中将所有出现的 TStringField 替换为 TWideStringField 后,我们发现现在还需要将 TWideStringFields 的“Size”属性值乘以四(如果我们使用 UTF8)大约100个地方。因此,我开始悬赏寻找一种减少修复 DFM 的手动工作的方法

最佳答案

对 unicode 字符使用 TStringField 会给你带来麻烦,它里面会有 $00,基本上以 dbExpress 驱动程序结束字符串,因为这些驱动程序接受 P(Ansi)Char 字符串。使用 TWideStringField 在 dbExpress 中使用 PWideChar,因此驱动程序需要真正的 unicode 代码点。

恐怕没有简单的出路。

关于delphi - 是否可以调整 TStringField 以像 Delphi 中的 TWideStringField 一样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com