如何将 TMemoryStream 的内容转换为变体?我使用德尔福 2010。

TMemoryStream 存储文件的内容,它可以是 PDF 或 JPG(扫描文档)。

文件保存在 MS SQL 库中。
当我在程序中进入编辑模式时,我将该文件的内容从 base 中提取到 TMemoryStream 中。

编辑文档的卡片后,我需要将文档发布回基地。
也可以更改扫描的文件(或替换为其他文件)。
为了回传记录,我使用了一个带有一堆参数的存储过程 - 每个字段一个。
我将参数作为变体传递给存储过程。

这就是我需要将 TMemoryStream 转换为变体的原因。

最佳答案

假设你需要 Variant 来保存一个字节数组,你可以使用这个:

var
  MS: TMemoryStream;
  V: Variant;
  P: Pointer;
begin
  ...
  V := VarArrayCreate([0, MS.Size-1], varByte);
  if MS.Size > 0 then
  begin
    P := VarArrayLock(V);
    Move(MS.Memory^, P^, MS.Size);
    VarArrayUnlock(V);
  end;
  ...
end;

10-05 22:15