编程时遇到的,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()两种形式???
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()两种形式???
dim v() as byte
l = filelen(pathname) ' 验证文件是否存在
l = freefile()
open pathname for binary as l
redim v(lof(l)-1)
get l,,v()
close l
ReadChunk = v()
end function
dim binTmp() as byte
lngFileNum=FreeFile
binTmp() = ReadChunk("测试图片.jpg")
Open "输出图片.jpg" for binary as #lngFileNum
'binTmp=GetBin() //这句代码不应该放这里,因为有可能开始写文件时却读文件失败。
Put #lngFileNum,,binTmp()
Close lngFileNum
=================================
改成function GetBin() as byte()就可以了
明确指定函数返回byte(),而不是variant