【问题标题】:Delphi XE2 - handling blob fieldsDelphi XE2 - 处理 blob 字段
【发布时间】:2012-01-09 14:57:12
【问题描述】:

我们正在努力使我们的应用程序兼容 unicode,并且我们正在从 delphi 2007 迁移到 delphi xe2,我们遇到了一些问题,需要有关它们的建议

1) 一项更改是在数据库中存储具有 unicode 字符串的 blob 数据

我们将巨大的 xml 数据作为 blob 存储在数据库中,但在最新的 delphi 版本(xe2)中,blob 被视为字节数组。那么应该怎么做才能将 blob 数据存储在数据库中,尝试转换 Param.AsBlob := WideBytesOf(xml) 但这似乎不起作用。

2) 我们还使用 EFD 系统中的 HyperString 来更快地处理字符串,但是现在这个库的 unicode 版本不可用,通过将 ansistring 更改为字符串来编译代码并尝试修改一些汇编语言指令但成功了到目前为止只有少数,所以任何人都可以提出更快的字符串操作的任何替代方案

【问题讨论】:

  • HyperString 在 Delphi 1.0 时代更为相关。更高版本的 Delphi 生成了更优化的代码。我建议尽可能用等效的帕斯卡代码替换此代码。重写所有 HyperStr ASM 代码以使用 Unicode 字符串将是一项艰巨的任务,我不知道这些努力是否值得。
  • 感谢您的意见,我们将研究用 Delphi 库函数替换 HyperStr 的调用

标签: delphi unicode blob delphi-xe2


【解决方案1】:

我在互联网上搜索了大约半年如何正确地将 Blob 放入数据库中,我找到了一个非常适合我的解决方案,也许它也会对您有所帮助:

Image - TcxImage 组件 MainQuery - TQuery 组件 MainQueryPicture - 它是通过字段编辑器存储在查询组件中的数据库中的 Blob 字段 ImagePath - 保存图像文件路径的字符串变量

    MainQuery.Edit;
    if Image.Picture.Graphic <> nil then //if there is an image loaded to the component
    begin
      MainQueryPicture.LoadFromFile(ImagePath); //load the image to a blob field
    end;
    MainQuery.Post; //post any changes to the table 

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2012-03-16
    相关资源
    最近更新 更多