如何将TMemoryStream的内容转换为变体?我使用Delphi 2010。
TMemoryStream存储文件的内容,可以是PDF或JPG(扫描文档)。
文件被保存在MS SQL数据库中。当我进入程序的编辑模式时,我会从数据库中提取该文件的内容到TMemoryStream中。
在编辑文档卡后,我需要将文档返回到数据库。扫描文件也可能发生更改(或替换为其他文件)。为了将记录发送回数据库,我使用一组参数的存储过程——每个字段都有一个参数。我将参数作为变量传递给存储过程。
这就是为什么我需要将TMemoryStream转换为变体的原因。
TMemoryStream存储文件的内容,可以是PDF或JPG(扫描文档)。
文件被保存在MS SQL数据库中。当我进入程序的编辑模式时,我会从数据库中提取该文件的内容到TMemoryStream中。
在编辑文档卡后,我需要将文档返回到数据库。扫描文件也可能发生更改(或替换为其他文件)。为了将记录发送回数据库,我使用一组参数的存储过程——每个字段都有一个参数。我将参数作为变量传递给存储过程。
这就是为什么我需要将TMemoryStream转换为变体的原因。
Variant
来向数据库传递数据?那不太高效。假设您已经将存储过程包装在自定义函数中,应该为每个参数使用实际的数据类型,或者至少使用array of const
,这样可以保留类型信息。对于大型二进制对象字段,您可以使用TStream
通过TDataSet.CreateBlobStream()
或TParam.AsStream
进行传输。 - Remy Lebeau