我把一个二进制文件读入内存后,怎么才能转换到VARIANT类型?因为二进制文件中有0x00值,能不能用VarDataFromOleStr之类的函数吧

解决方案 »

  1.   

    http://haitian.myrice.com/ByteDataTrans.txt
      

  2.   

    直接使用variant类型装入文件就行了,以下是我的3层数据库程序中间层的一个读二进制流的借口方法,供参考,OleVariant和Variant用法是相同的。procedure TZfInfoRDM.ReceiveAccessory(const AccesName: WideString;
      out Data: OleVariant; out Size: Integer);
    var
      SearchRec: TSearchRec;
      S: TStream;
      p: Pointer;
      FileName: String;
    begin
      Size := 0;
      FileName := DModule.SystemPath + AccessPath + AccesName;
      // 在系统二进制文件目录查找文件,成功将结果记录到SearchRec中
      if FindFirst(FileName, faAnyFile, SearchRec) = 0 then
      begin
        Size := SearchRec.Size;  // 取文件长度,打开文件供读
        S := TFileStream.Create(FileName, fmOpenRead);
        try
          Data := VarArrayCreate([0, Size], VarByte); // 建立单字节的动态数组
          p := VarArrayLock(Data);
          try
            S.Read(p^, Size);       // 读文件
          finally
            VarArrayUnLock(Data);
          end;
        finally
          S.Free;
        end;
      end;
    end;