Перейти к содержимому

Фотография

два Wait одновременно в TestComplete


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 alf2006x

alf2006x

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 сентября 2011 - 07:36

Имею тестируемое приложение, в котором есть два поля с изменяющимися текстовыми значениями. Изменения значений происходят независимо друг от друга. Как мне при помощи команды Wait отследить изменения в каждом поле? И можно ли это сделать вообще? В настоящий момент отслеживаю их организовав цикл, в котором сравниваю значение поля со значением, сохранённым в переменной. Но при таком способе процессор грузится на 100%. И неумолимо растёт использование памяти, что в конечном итоге приводит к вылетанию с ошибкой "Out of memory".
  • 0

#2 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 05 сентября 2011 - 09:10

Имею тестируемое приложение, в котором есть два поля с изменяющимися текстовыми значениями. Изменения значений происходят независимо друг от друга. Как мне при помощи команды Wait отследить изменения в каждом поле? И можно ли это сделать вообще? В настоящий момент отслеживаю их организовав цикл, в котором сравниваю значение поля со значением, сохранённым в переменной. Но при таком способе процессор грузится на 100%. И неумолимо растёт использование памяти, что в конечном итоге приводит к вылетанию с ошибкой "Out of memory".

Вставьте в цикл небольшую задержку при помощи delay. Это должно решить проблему с загрузкой процессора.
Еще один вариант - это делать в цикле Wait, а не просто сравнение. Например, сделайте цикл в котором будут Wait'ы с таймаутом в 1 секунду и повторяйте его нужное вам количество раз.
  • 0

#3 alf2006x

alf2006x

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 05 сентября 2011 - 11:15

А проблему с переполнением пямяти как-то можно устранить?
  • 0

#4 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 05 сентября 2011 - 11:22

А проблему с переполнением пямяти как-то можно устранить?

Покажите код, который вы выполняете в цикле. Возможно, что-то придумаем.
  • 0

#5 alf2006x

alf2006x

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 07 сентября 2011 - 08:16




Sub LoopAction



  x=1  

  

  tPressure = lstVehicleParams.wItem(0,1)

  tTemperature = lstVehicleParams.wItem(0,2)  



  UserForms.FinalForm.cxTextEdit1.Text = lstVehicleParams.wItem(0,0)

  UserForms.FinalForm.cxTextEdit2.Text = tPressure 

  UserForms.FinalForm.cxTextEdit3.Text = tTemperature



  UserForms.FinalForm.cxMemo1.Lines.Clear

  UserForms.FinalForm.cxMemo1.Lines.Add(""&x&Chr(9)&" "&Now()&" ->   "&tPressure&"; "&tTemperature)

  

  WriteParamsInLog tPressure, tTemperature

  

  Do While IsRuning = True

    tPressure = lstVehicleParams.wItem(0,1)

    tTemperature = lstVehicleParams.wItem(0,2)  



    If (UserForms.FinalForm.cxTextEdit2.Text <> tPressure) 

    Or (UserForms.FinalForm.cxTextEdit3.Text<> tTemperature) Then

      

      if (UserForms.FinalForm.cxMemo1.Lines.Count >10) Then

        UserForms.FinalForm.cxMemo1.Lines.Delete(0)

      End If



      x=x+1

      UserForms.FinalForm.cxTextEdit2.Text = tPressure

      UserForms.FinalForm.cxTextEdit3.Text = tTemperature

      

      UserForms.FinalForm.cxMemo1.Lines.Add(""&x&Chr(9)&" "&Now()&" ->   "&tPressure&"; "&tTemperature)



      WriteParamsInLog tPressure, tTemperature

    End If                                                                                              

  Loop

End Sub


  • 0

#6 alf2006x

alf2006x

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 07 сентября 2011 - 08:24

За одни сутки этот мой цикл съедает всю память.
  • 0

#7 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 07 сентября 2011 - 08:53

Я в VBS не шибко разбираюсь, но попробуйте сделать так:
  Do While IsRuning = True
    tPressure = lstVehicleParams.wItem(0,1)
    tTemperature = lstVehicleParams.wItem(0,2)

    ...

    tPressure = Nothing
    tTemperature = Nothing
  Loop

  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных