【问题标题】:Updating Firebird UDF Library to Delphi 2010将 Firebird UDF 库更新到 Delphi 2010
【发布时间】:2010-07-30 16:41:30
【问题描述】:

在 Delphi 2006 中,我使用了一个基于 tbudf.pas 的用户定义函数库和一些我自己添加的函数。由于我正在开发一个工资单程序,因此此功能对于一些可能需要一些复杂 SQL 的常见工资单概念非常有帮助。我保留了我的 Delphi 2006 安装,昨天我发现在 Delphi 2010 中编译我的 udf 库需要一些工作。

虽然我确实对我的 dll 和 Firebird 服务器之间的数据传递方式有了一些了解,但我大多只是使用 tbudf 中存在的函数来设置我自己的函数。不幸的是,没有一个函数使用 unicode 字符编码。也许这没什么大不了的,因为我已经将所有 Delphi 2010 I/O 与数据库一起设置为使用 AnsiStrings,所以也许我可以更改任何 Delphi 2010 函数以使用 PAnsiChar 之类的东西。但我将在这里开辟一条新的道路。

是否有任何已更新到 Delphi 2010 的开放 udf 库?如果您有任何注意事项的提示,也许我可以使用它们来更新我自己的库并将其发布给需要它的其他人。

【问题讨论】:

  • 看来我一开始可能有一个误解。看来 PChar(指向空终止字符串的指针)的 unicode 替换可能应该是 PAnsiString 而不是 PAnsiChar。
  • 没有。帮助表明 PAnsiChar 定义了一个以空字符结尾的字符串,就像在 Delphi 2010 之前的 PChar 一样。

标签: delphi delphi-2010 firebird user-defined-functions


【解决方案1】:

我使用 unicode 格式的 firebird 数据库移动了整个项目。

关于udfs,如果要保持数据库的编码不变,可以使用AnsiString/PAnsiChar 代替string/PChar。

但是如果你想使用 UTF8 编码你的数据库并在 Delphi 中利用 Unicode,你应该改用 UTF8String 类型。

注意,数据库连接的编码与数据库本身的编码不同。您还应该注意 UTF8 中字符串的长度。

要将数据库转换为 UTF8,此工具对您很有用: http://code.google.com/p/fbclone/

【讨论】:

  • 谢谢亨利。阅读您的回复后,我返回并通过 dll 代码进行更改。它现在似乎按预期工作。目前,将数据库转换为使用 unicode 字符编码不会产生任何好处,并且可能会破坏已部署的数据库,我将在数据库中保留 8 位字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多