Private Sub cmdfindmax_Click()
CommonDialog1.Action = 1Open CommonDialog1.FileName For Input As #1Do While Not EOF(1)
     Line Input #1, inputdata
     
     Data = Data + inputdata + vbCrLf
     
      
Loop
a = Split(Data, vbCrLf)
Close #1
'///////////以上代码的目的是把txt格式的一列数据导入到数组a中////////////
i = 0
 Open "c:\speeddata.txt" For Append As #2
Do While (i < UBound(a))
 
  If a(i + 1) >= a(i) And a(i + 1) >= a(i + 2) Then
  
  Print #2, a(i)
  
  i = i + 1
  End If
 
Loop
 Close #2
End Sub
'///////////以上代码的意思是找到数据列里的尖峰值,比如1 2 1 2 2 3 4 1 0,找出的尖峰值就是2 4
现在的问题是:我执行程序的时候,会出现程序未响应,CPU到100%  我不知道哪里出错了?而当我把if 和endif语句屏蔽掉的时候,就不会有错误。

解决方案 »

  1.   

    在Loop语句上面放入 DoEvents 试一下.
      

  2.   

    Do While (i < UBound(a))
      If a(i + 1) >= a(i) And a(i + 1) >= a(i + 2) Then
        Print #2, a(i)
      End If
      i = i + 1        '这一句的位置一定要放正确哦
    Loop
      

  3.   

    当然上面程序的数组有个上下标越界的问题,我把代码改称如下,经测试通过。
    Private Sub cmdfindmax_Click()
    CommonDialog1.Action = 1Open CommonDialog1.FileName For Input As #1Do While Not EOF(1)
         Line Input #1, inputdata
         
         Data = Data + inputdata + vbCrLf
         
          
    Loop
    a = Split(Data, vbCrLf)
    Close #1
    i = 1
     Open "c:\speeddata.txt" For Append As #2
    Do While (i < (UBound(a) - 1))
     
      If a(i) >= a(i + 1) And a(i) >= a(i - 1) Then
      
      Print #2, a(i)
      
     
      End If
       i = i + 1
     
    Loop
     Close #2
    End Sub