function ByteToOleVariant(Strm: Array of byte ): OleVariant;
var
  Data: PByteArray;
  i :integer;
begin
  Result := VarArrayCreate([0, Length(Strm)-1], varByte);
  Data := VarArrayLock(Result);
  try
   for i:=0 to Length(Strm)-1 do
       Data^[i]:=Strm[i] ;
  finally
    VarArrayUnlock(Result);
  end;
end;是否正确???

解决方案 »

  1.   

    function   ByteToOleVariant(Strm:   Array   of   byte   ):   OleVariant; 
    var 
        Data:   PByteArray; 
        i   :integer; 
    begin 
        Result   :=   VarArrayCreate([0,   high(Strm)-Low(Strm)],   varByte); 
        Data   :=   VarArrayLock(Result); 
        try 
          for   i:=Low(Strm)   to   high(Strm)   do 
                  Data^[i]:=Strm[i]   ; 
        finally 
            VarArrayUnlock(Result); 
        end; 
    end; 
      

  2.   


    function Convert(const bytes: array of Byte): Variant;
    var
      p: Pointer;
    begin
      Result := VarArrayCreate([0, High(bytes)-Low(bytes)], varByte);
      p := VarArrayLock(Result);
      try
        if Length(bytes) > 0 then
          Move(bytes[0], p^, Length(bytes));
      finally
        VarArrayUnlock(Result);
      end;
    end;