vb求解(无效的过程调用或参数)

阿伟1830 2014-07-22 08:54:56
Private Sub Command6_Click()
Dim s As String
Dim T As Integer
Dim i As Integer, j As Integer, cnt As Integer
Dim a As Integer

Dim send_buf() As Byte

ReDim send_buf(1024)

cnt = 0
s = Trim(Text2.Text)
T = Len(s)
Do While (l)
Do Until IsHex(Left(s, 1)) <> 16
T = T - 1
If l = 0 Then Exit Do ‘当我删除这个语句之后,如果假设Text2.Text=a(随意一个字符),点击Command6_Click,就会出现错误:无效的过程调用或参数
经过验证 s = Right(s, 0)也没有错误,求解
s = Right(s, T)
Loop
a = IsHex(Left(s, 1))
If l = 0 Then Exit Sub
T = T- 1
s = Right(s, T)

If T <> 0 And IsHex(Left(s, 1)) <> 16 Then
a = a * 16 + IsHex(Left(s, 1))
T = T - 1
s = Right(s, l)
End If
cnt = cnt + 1
send_buf(cnt) = a
Loop

If cnt > 128 Then cnt = 128
ReDim Preserve send_buf(cnt)

MSComm1.Output = send_buf()

End Sub


Public Function IsHex(c As String) As Integer
If c >= "0" And c <= "9" Then
IsHex = Val(c) - Val("0")
ElseIf c >= "a" And c <= "f" Then
IsHex = Asc(c) - Asc("a") + 10
ElseIf c >= "A" And c <= "F" Then
IsHex = Asc(c) - Asc("A") + 10
Else
IsHex = 16
End If
...全文
1043 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-07-25
  • 打赏
  • 举报
回复
字体选用 FixedSys 或 Consolas。
'代码编辑环境的字体首先要能明确区分字符'
Iil10Oo
舉杯邀明月 2014-07-25
  • 打赏
  • 举报
回复
s=right(s, 0) 是不会出错,
但你不“在适当的时候退出循环”,
那会: s=right(s, -1)
这个时候还能正确吗???
赵4老师 2014-07-24
  • 打赏
  • 举报
回复
引用 7 楼 bcrun 的回复:
[quote=引用 6 楼 Chen8013 的回复:] 你不是:T=Len(s) 吗? 怎么后面在用变量l 在处理? 从哪冒出来的!!!
还是你眼尖,这个l看来又是楼主不加option explicit造成的调试麻烦。昨天回了一个4三角用户的问题就有这样的情况,看来不严格申请变量的习气还是比较常见啊。这个不止在vb,在javascript等程序调试中也较常见。[/quote] 支持。 出来混,早晚是要还的。 今天的方便,是以将来某一天的麻烦为代价的。
阿伟1830 2014-07-24
  • 打赏
  • 举报
回复
引用 7 楼 bcrun 的回复:
[quote=引用 6 楼 Chen8013 的回复:] 你不是:T=Len(s) 吗? 怎么后面在用变量l 在处理? 从哪冒出来的!!!
还是你眼尖,这个l看来又是楼主不加option explicit造成的调试麻烦。昨天回了一个4三角用户的问题就有这样的情况,看来不严格申请变量的习气还是比较常见啊。这个不止在vb,在javascript等程序调试中也较常见。[/quote] 我是在学习别人用的串口源码,本来他们是用L=Len(s) ,这个L在vb上显示跟1是一模一样的,刚开始我研究这个程序都被搞糊涂了,后来才发现这个问题,在提问题的时候,怕大家看也看错了,所以,在word上专门把1改为L,发现,但还是漏了某个地方没有改过来。
bcrun 2014-07-24
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
你不是:T=Len(s) 吗?
怎么后面在用变量l 在处理?
从哪冒出来的!!!


还是你眼尖,这个l看来又是楼主不加option explicit造成的调试麻烦。昨天回了一个4三角用户的问题就有这样的情况,看来不严格申请变量的习气还是比较常见啊。这个不止在vb,在javascript等程序调试中也较常见。
阿伟1830 2014-07-23
  • 打赏
  • 举报
回复
谢谢版主的支持
阿伟1830 2014-07-23
  • 打赏
  • 举报
回复
我已经调试了很久很久,但就是不知道为什么会出现那种错误
舉杯邀明月 2014-07-23
  • 打赏
  • 举报
回复
你不是:T=Len(s) 吗?
怎么后面在用变量l 在处理?
从哪冒出来的!!!
bcrun 2014-07-23
  • 打赏
  • 举报
回复
引用 1 楼 jielin2012 的回复:
下班后,没有精力来看大篇的程序。 楼主自己多调试一下吧。
同感,特别是这种一开始啥也不交待就直接排代码的。 给你帖子加30分,支持一下吧。
threenewbee 2014-07-22
  • 打赏
  • 举报
回复
Public Function IsHex(c As String) As Integer If c >= "0" And c <= "9" Then IsHex = Val(c) - Val("0") ElseIf c >= "a" And c <= "f" Then IsHex = Asc(c) - Asc("a") + 10 ElseIf c >= "A" And c <= "F" Then IsHex = Asc(c) - Asc("A") + 10 Else IsHex = 16 End If 根本不用这么写,直接 Public Function IsHex(c As String) As Integer IsHex = Val("&H" & c) End Function 即可。
jielin2012 2014-07-22
  • 打赏
  • 举报
回复
下班后,没有精力来看大篇的程序。 楼主自己多调试一下吧。

1,451

社区成员

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

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