два Wait одновременно в TestComplete
#1
Отправлено 05 сентября 2011 - 07:36
#2
Отправлено 05 сентября 2011 - 09:10
Вставьте в цикл небольшую задержку при помощи delay. Это должно решить проблему с загрузкой процессора.Имею тестируемое приложение, в котором есть два поля с изменяющимися текстовыми значениями. Изменения значений происходят независимо друг от друга. Как мне при помощи команды Wait отследить изменения в каждом поле? И можно ли это сделать вообще? В настоящий момент отслеживаю их организовав цикл, в котором сравниваю значение поля со значением, сохранённым в переменной. Но при таком способе процессор грузится на 100%. И неумолимо растёт использование памяти, что в конечном итоге приводит к вылетанию с ошибкой "Out of memory".
Еще один вариант - это делать в цикле Wait, а не просто сравнение. Например, сделайте цикл в котором будут Wait'ы с таймаутом в 1 секунду и повторяйте его нужное вам количество раз.
#3
Отправлено 05 сентября 2011 - 11:15
#4
Отправлено 05 сентября 2011 - 11:22
Покажите код, который вы выполняете в цикле. Возможно, что-то придумаем.А проблему с переполнением пямяти как-то можно устранить?
#5
Отправлено 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
#6
Отправлено 07 сентября 2011 - 08:24
#7
Отправлено 07 сентября 2011 - 08:53
Do While IsRuning = True
tPressure = lstVehicleParams.wItem(0,1)
tTemperature = lstVehicleParams.wItem(0,2)
...
tPressure = Nothing
tTemperature = Nothing
Loop
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных

