回 帖 发 新 帖 刷新版面

主题:[原创]do while语句的应用?

怎样do while语句控制多个条件?
   比如:变量buf是字符串型,如果它左边的第一位不是“=”,并且它的长度不为9,
(left(buf,1)<>"="and len(buf) <> 9)就进行循环,如果它左边的第一位是“=”,并且它的长度为9,就退出循环!
      我这样写的程序:
                     do
                        if left(buf,1)<>"="and len(buf) <> 9 then
                           text1.text = ""
                           buf = ""
                           buf = msc.input
                        else
                            exit do
                      loop
           这样写对吗?我运行了几次,好象逻辑上不对!有没有好的办法,请高手帮忙!

回复列表 (共33个回复)

沙发

从语法上看,if……then……else……后面缺少了endif

板凳

do while left(buf,1)<>"="and len(buf) <> 9
                           text1.text = ""
                           'buf = ""
                           buf = msc.input
loop

3 楼

end if 忘写了,加上也不行!

4 楼

while 后面不能跟两个控制条件吧?

5 楼

能。但不是里面套if
而是:
do while 条件1 and 条件2 or 条件3 and 条件4
…………
loop

6 楼

我个人感觉不对劲的地方:
一、
如果每次buf = msc.input buf的值都满足left(buf,1)<>"="and len(buf) <> 9,那么循环会继续下去
你能否保证buf = msc.input 一定会在某次循环中 buf的值不满足left(buf,1)<>"="and len(buf) <> 9 ?
二、
当buf = msc.input  buf的值不满足left(buf,1)<>"="and len(buf) <> 9 时
text1.text = ""
换句话说,text1的值按照你的代码运行始终都是空。

7 楼

这样的循环的确很没意思,
就像人在一生中不断的谈恋爱,却不结婚,
不断的努力,最终仍然是一场空.

但,你能不循环下去吗?
哪怕只是一个空想.

8 楼

谢谢wdkshp!msc.input是接收仪表的数据,仪表所发送的数据绝大多数都能满足left(buf,1)="="and len(buf) = 9,为了防止有乱码出现,我就用do whileleft(buf,1)<>"="and len(buf) <> 9循环语句进行等待!程序如下:
         Option Explicit

Dim ary() As String
Dim buf As Variant
Dim i As Integer

Private Sub Form_Load()
MSC.CommPort = 2
MSC.Settings = "1200,n,8,1"
MSC.InBufferCount = 0
MSC.OutBufferCount = 0
MSC.InputLen = 9
MSC.RThreshold = 9
MSC.PortOpen = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
If MSC.PortOpen = True Then MSC.PortOpen = False
End Sub

Private Sub MSC_OnComm()
Select Case MSC.CommEvent
       Case comEvReceive
       buf = MSC.Input
       Do While (Left(buf, 1) <> "=") And (Len(buf) <> 9)
            txtReceive.Text = ""
            buf = MSC.Input
         Loop
        txtReceive.Text = buf
        Case comEvSend
End Select
End Sub
可是怎么也不行,能帮忙看看吗?

9 楼

Do While (条件1)And (条件2)
....
loop
好多人都告诉我这样用do while语句,我发现这样用do while 语句根本就不对!如果不信你可以举几个简单的例子试一试!

10 楼

老大徒伤悲你告诉我的!
do while 条件1 and 条件2 or 条件3 and 条件4
…………
loop
我发现这样用do while 语句根本就不对!如果不信你可以举几个简单的例子试一试!

我来回复

您尚未登录,请登录后再回复。点此登录或注册