首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

一个写文件如何会多出variant头

2012-02-01 
一个写文件怎么会多出variant头?编程时遇到的,functionGetBin()读取二进制图片setoAsCreateObject( adod

一个写文件怎么会多出variant头?
编程时遇到的,

function   GetBin()     '读取二进制图片
      set   oAs=CreateObject( "adodb.stream ")
      oAs.Type=1
      oAs.mode=3
      oAs.Open
      oAs.LoadFromFile   "测试图片.jpg "
      oAs.Position=0
      GetBin=oAs.Read(-1)
      oAs.close
end   function
 
Sub   WriteBin()
      dim   lngFileNum
      lngFileNum=FreeFile
      Open   "输出图片.jpg "   for   binary   as   #lngFileNum
      Put   #lngFileNum,,GetBin()               ' <---------------错误处
end   Sub

我在写图片文件时,用上述方法,出现“输出图片”比输入图片大大约10个字节的问题,分析后发现时Variant的类型头。我把函数改成下情况后正常:

      lngFileNum=FreeFile
      Open   "输出图片.jpg "   for   binary   as   #lngFileNum
dim   binTmp()   as   byte
      binTmp=GetBin()
      Put   #lngFileNum,,binTmp


请教
为什么会出现这种情况,GetBin()不是返回的是byte()类型吗,怎么会有variant和byte()两种形式???




[解决办法]
function GetBin() '读取二进制图片
=================================
改成function GetBin() as byte()就可以了
明确指定函数返回byte(),而不是variant
[解决办法]
就是,你的函数返回值类型决定了写文件的变量类型。

热点排行