主题:[原创]do while语句的应用?
lcrxl1815
[专家分:110] 发布于 2008-09-15 12:47:00
怎样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个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-09-15 16:49:00
从语法上看,if……then……else……后面缺少了endif
板凳
moz [专家分:37620] 发布于 2008-09-15 18:10:00
do while left(buf,1)<>"="and len(buf) <> 9
text1.text = ""
'buf = ""
buf = msc.input
loop
3 楼
lcrxl1815 [专家分:110] 发布于 2008-09-15 18:51:00
end if 忘写了,加上也不行!
4 楼
lcrxl1815 [专家分:110] 发布于 2008-09-15 18:58:00
while 后面不能跟两个控制条件吧?
5 楼
老大徒伤悲 [专家分:29120] 发布于 2008-09-15 19:17:00
能。但不是里面套if
而是:
do while 条件1 and 条件2 or 条件3 and 条件4
…………
loop
6 楼
wdkshp [专家分:5490] 发布于 2008-09-16 09:45:00
我个人感觉不对劲的地方:
一、
如果每次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 楼
moz [专家分:37620] 发布于 2008-09-16 15:13:00
这样的循环的确很没意思,
就像人在一生中不断的谈恋爱,却不结婚,
不断的努力,最终仍然是一场空.
但,你能不循环下去吗?
哪怕只是一个空想.
8 楼
lcrxl1815 [专家分:110] 发布于 2008-09-16 16:20:00
谢谢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 楼
lcrxl1815 [专家分:110] 发布于 2008-09-16 16:28:00
Do While (条件1)And (条件2)
....
loop
好多人都告诉我这样用do while语句,我发现这样用do while 语句根本就不对!如果不信你可以举几个简单的例子试一试!
10 楼
lcrxl1815 [专家分:110] 发布于 2008-09-16 16:41:00
老大徒伤悲你告诉我的!
do while 条件1 and 条件2 or 条件3 and 条件4
…………
loop
我发现这样用do while 语句根本就不对!如果不信你可以举几个简单的例子试一试!
我来回复