如题。在这个帖子里也是一个问题,多谢了http://community.csdn.net/Expert/topic/4862/4862922.xml?temp=.5152704

解决方案 »

  1.   

    var
      p: Pointer;
      fs: TFileStream;
      AFileNameYouWant2Save: string;
      pBuf: OleVariant;
      nSize: Integer;
    begin
      nSize := VarArrayHighBound(pBuf, 0) - VarArrayLowBound(pBuf, 0) + 1;  fs := TFileStream.Create(AFileNameYouWant2Save, fmCreate or fmOpenWrite);
      try
        p := VarArrayLock(pBuf);
        try
          fs.Seek(0, soFromBeginning);
          fs.WriteBuffer(p^, nSize);
        finally
          VarArrayUnLock(pBuf);
        end;
      finally
        fs.Free;
      end;
    end;
      

  2.   

    谢谢,不过我这里提示错误,代码如下:
    var
      pBuf: OleVariant;
      nSize: Integer;
    begin
      nSize := VarArrayHighBound(pBuf, 0);
    end;错误信息:
    exception class EVariantInvalidArgError with message 'Invalid argument'
      

  3.   

    见鬼了, 是不是没有引用Variants单元
      

  4.   

    //VarToStream效果不错,我一直用它
    //创建一个memorystream先
    procedure VarToStream(value:variant;Stream:TStream);
    var
      MyBuffer:Pointer;
    begin
      Stream.Position := 0;
      MyBuffer := VarArrayLock(value);
      Stream.Write(MyBuffer^, VarArrayHighBound(value, 1)); 
      VarArrayUnlock(value);
      Stream.Position := 0;
    end;
      

  5.   

    谢谢楼上的,不过我这里还是出错,VarArrayHighBound函数总是报错,说参数什么的不对var
      pBuf: OleVariant;
      nSize: Integer;
    begin
      nSize := VarArrayHighBound(pBuf, 1);
    end;----------是因为pbuf没有初始化的原因么?我又拿下面的代码测,仍然出错var
      http:WinhttpRequest;
      url:string;
      pBuf: OleVariant;
      nSize: Integer;
    begin
      url:='https://www.nationm.com.cn/kooweb/Image.do';
      http:=CreateComObject(CLASS_WinHttpRequest) as WinHttpRequest;
      http.SetTimeouts(10000,10000,10000,10000);
      http.Open('GET',url,EmptyParam);
      http.Send('');
      pBuf := http.ResponseStream;
      nSize := VarArrayHighBound(pBuf, 1);
    end;
      

  6.   

    pBuf := http.ResponseStream;
    //得了解下这里pBuf 的格式
      

  7.   

    pBuf := http.ResponseStream;
    //得了解下这里pBuf 的格式我觉得里面的格式应该就是图像格式,而且如果是格式错误,也不该报错的,最多是下载的数据无法正常显示,请大家帮忙