【发布时间】:2013-01-16 17:16:58
【问题描述】:
如何将 TMemoryStream 的内容转换为变体?我使用的是 Delphi 2010。
TMemoryStream 存储文件的内容,可以是 PDF 或 JPG(扫描文档)。
文件保存在 MS SQL 库中。 当我在程序中进入编辑模式时,我将该文件的内容从 base 提取到 TMemoryStream 中。
编辑文档卡片后,我需要将文档发布回基地。 扫描的文件也可以更改(或替换为其他文件)。 为了回发记录,我使用了一个带有一堆参数的存储过程——每个字段一个。 我将参数作为变体传递给存储过程。
这就是我需要将 TMemoryStream 转换为变体的原因。
【问题讨论】:
-
您为什么使用
Variant将数据传递到数据库?那不是很有效。假设您已将存储过程包装在自定义函数中,您应该为每个参数使用实际数据类型,或者至少使用array of const,这样您就可以保留类型信息。对于 blob 字段,您可以使用TStream通过TDataSet.CreateBlobStream()或TParam.AsStream发布该数据。 -
您想使用什么格式将其存储在变体中。请记住,变体只是一个容器。
-
雷米,感谢您的两个帖子。我当然应该将我的变体变回实际的数据类型。实际上,我现在不记得为什么我开始将我的数据视为变体,所以现在我没有理由不让事情恢复原状。再次感谢。
标签: delphi memorystream variant