将TMemoryStream转换为variant

Vas*_*kov 4 delphi memorystream variant

如何将TMemoryStream的内容转换为变体?我使用的是Delphi 2010.

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

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

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

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

Rem*_*eau 10

假设您需要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;
Run Code Online (Sandbox Code Playgroud)

  • 将上限设置为-1是有效的.这就是如何创建空数组.数组中的元素数量计算为"highbound - lowbound + 1",因此`-1 - 0 + 1`为"0". (3认同)