过程返回值,大家帮忙看看,在线等!

xsp919 2005-07-20 10:19:07
我是对VB就是菜鸟一只,这两天因为某些原因必须用VB修改一些东东。大家帮忙看看。先谢了。
我定义的过程如下:主要功能是把原字符串进行压缩然后在返回。ZipStr就是用来接收压缩后的字符,然后我想把它返回。

Function GetZip(OriginStr As String, OriginLen As Integer) As String

Dim Index As Integer, EndIdx As Integer, TLoop As Integer, ZipAdd As Integer, OriginAdd As Integer


Dim TempStr(1 To 12) As Integer
Dim ZipStr(1 To 9) As Integer
EndIdx = 1: ZipAdd = 0: OriginAdd = 0
For Index = 1 To OriginLen
TempStr(Index) = Mid(OriginStr, Index, 1)
EndIdx = EndIdx + 1
Next Index
For Index = EndIdx To 12
TempStr(Index) = 32
Next Index
For TLoop = 1 To 3
ZipStr(1 + ZipAdd) = (Mid(OriginStr, 1 + OriginAdd, 1) - 32) * (2 ^ 2) + (Mid(OriginStr, 2 + OriginAdd, 1) - 32) \ (2 ^ 4)
ZipStr(2 + ZipAdd) = (Mid(OriginStr, 2 + OriginAdd, 1) - 32) * (2 ^ 4) + (Mid(OriginStr, 3 + OriginAdd, 1) - 32) \ (2 ^ 2)
ZipStr(3 + ZipAdd) = (Mid(OriginStr, 3 + OriginAdd, 1) - 32) * (2 ^ 6) + (Mid(OriginStr, 4 + OriginAdd, 1) - 32)
ZipAdd = ZipAdd + 3
OriginAdd = OriginAdd + 4
Next

GetLine = Right(ZipStr, 9)

End Function

编译的时候产生错误提示:GetLine -》左边的函数调用必须返回变体或对象。

555555555~~:( 一点都清楚对象到底是什么东东。大家帮我看看。有什么办法解决。
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2005-07-21
  • 打赏
  • 举报
回复
ZipStr是个数组,所以必须加下标访问,比如 ZipStr(2)
pweixing 2005-07-21
  • 打赏
  • 举报
回复
Dim TempStr(1 To 12) As Integer 这句定义了 tempstr 是一个整形的数组,那么
TempStr(Index) = Mid(OriginStr, Index, 1) 这句执行就会出错,因为 Mid(OriginStr, Index, 1) 执行的结果是字符串。
所以该句要修改为 Dim TempStr(1 To 12) As String
另外 ZipStr(1 To 9) As Integer 也要改为 ZipStr(1 To 9) As String
最后 GetLine = Right(ZipStr, 9) 这句中的 ZipStr 应该采用数组形式:GetLine = Right(ZipStr(1), 9),而且既然是有返回的函数,那么这句话应该改成 GetZip= Right(ZipStr(1), 9),这样才有返回值。
qzgrmc 2005-07-21
  • 打赏
  • 举报
回复
作者以前是用C语言的吧。好像吧 C的字符串和VB的字符串都弄混了。 比如TempStr(Index) = Mid(OriginStr, Index, 1) 就通不过的。
xsp919 2005-07-21
  • 打赏
  • 举报
回复
意思是说返回值必须为加下标的吗?也就是说要 GetLine = ZipStr(2)这样?

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧