два 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 анонимных