名人的给父母一封家书:VB中Boolean型变量的困惑?

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 04:04:20
Private Sub cmdSend_Click()
Dim num, msg As String
Dim r As Boolean
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
num = Trim(Text1.Text)
msg = Trim(Text2.Text)
r = SendSms(num, msg)
Timer1.Enabled = True
End Sub
这是我截取的VB程序中的一段代码,其中r = SendSms(num, msg)这句话有什么意义?调用完SendSms函数后有一个true的返回值,也就是说r的值为true,可是程序中只出现了一个r,就是在这里出现过,所以不明白这句话有什么意义?希望会的朋友能帮我解决,谢谢大家!

SendSms()是你自定义的一个函数,它返回一个Boolean型变量,从字面上理解SendSms()好像执行发送短信的操作,如果发送成功则返回TRUE,否则返回FALSE。

程序中定义了Boolean型变量r用来接收SendSms(num, msg)返回的值,但是r只出现了一次,实际上只是起了接收SendSms(num, msg)返回值的作用,别的什么也没做。根据我的经验,你的本意是想执行完SendSms(num, msg)=True后才执行Timer1.Enabled = True的,我说得对吧?那么你的代码中却没有做任何判断,所以,你定义了这个变量r实际上有点浪费了,很可惜也很危险啊,因为这样在SendSms(num, msg)=False的时候同样执行后续代码的话,在逻辑上是错误的,那样与你的本意就不一致了。

解决办法:
1、如果不论SendSms(num, msg)是否返回TRUE,都执行Timer1.Enabled = True 的话,你就不需要定义r变量了,直接写:
Call SendSms(num, msg)
Timer1.Enabled = True

2、如果是想SendSms(num, msg)返回TRUE后再执行Timer1.Enabled = True的话,可以这样写:
If SendSms(num, msg)=True Then
Timer1.Enabled = True
End If

或者

r = SendSms(num, msg)
If r = True Then
Timer1.Enabled = True
End If

这样定义 r 变量才显得有意义。