остаток времени в QTime |
Здравствуйте, гость ( Вход | Регистрация )
остаток времени в QTime |
AD |
15.6.2009, 14:26
Сообщение
#11
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
была такая проблемка и у меня. если я правильно понял, то Запомнить время начала это запомнить системное время? так? я сначала так и сделал, но потом от шефа получил по рукам. шеф мотивировал тем что если время выполнения большое к примеру более 1 минуты то пользователь сможет поменять системное время и тогда будет ерунда. наверное самому время надо считать в смысле заводить таймер и наращивать время. Ты о чем вообще? )) Вот решение проблемы, которое предложил SABROG, за что ему огромное спасибо:
|
|
|
igor_bogomolov |
15.6.2009, 14:45
Сообщение
#12
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Цитата(AD)
1) Если ты не учитываешь дату, зачем используешь QDateTime, достаточно QTime
2) По идее твой run должен грузить проц на 100%. Дабавь в цикл QThread::msleep. 3) Зачем для токого функционала выделять доп. поток? 4) _time не защищен мьютексом. 5) Уверен ли ты что поток гарантированно завершится по прошествии нужного времени Сообщение отредактировал igor_bogomolov - 15.6.2009, 14:51 |
|
|
kwisp |
15.6.2009, 14:50
Сообщение
#13
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
AD,
значит я чего-то не допонял. |
|
|
igor_bogomolov |
15.6.2009, 14:56
Сообщение
#14
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
AD |
15.6.2009, 15:04
Сообщение
#15
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
1) Если ты не учитываешь дату, зачем используешь QDateTime, достаточно QTime
2) По идее твой run должен грузить проц на 100%. Дабавь в цикл QThread::msleep. 3) Зачем для токого функционала выделять доп. поток? 4) _time не защищен мьютексом. 5) Уверен ли ты что поток гарантированно завершится по прошествии нужного времени 1) Да. Поправил. Бывает.... Спасибо. 2) Куда и как добавить? Подскажи, пожалуйста. 3) Доп. поток, потому что это только начало работы потока. Там более сложная структура. 4) Зачем мьютекс? 5) Цикл завершится - в этом уверен. Раз цикл завершится, то run ничего делать не будет. |
|
|
igor_bogomolov |
15.6.2009, 15:08
Сообщение
#16
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
AD |
15.6.2009, 15:17
Сообщение
#17
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
QTime starting_time, finished_time; ///< время начала и окончания отсчета Такую ситуацию ты не предусматриваешь? starting_time = 23,59,00 finished_time = 00,02,00 finished_time лучше сделать не конечным временем, а интервалом Что с msleep то? На счет ситуации не знаю пока. Такую ситуацию сам Qtime отследит: Цитата int QTime::secsTo ( const QTime & t ) const
Returns the number of seconds from this time to t. If t is earlier than this time, the number of seconds returned is negative. Because QTime measures time within a day and there are 86400 seconds in a day, the result is always between -86400 and 86400. See also addSecs() and QDateTime::secsTo(). Сообщение отредактировал AD - 15.6.2009, 15:19 |
|
|
igor_bogomolov |
15.6.2009, 15:23
Сообщение
#18
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
1) Да. Поправил. Бывает.... Спасибо. 2) Куда и как добавить? Подскажи, пожалуйста. 3) Доп. поток, потому что это только начало работы потока. Там более сложная структура. 4) Зачем мьютекс? 5) Цикл завершится - в этом уверен. Раз цикл завершится, то run ничего делать не будет. 1) Не за что 2) В любом месте цикла while, лучше в конце. 3) Ок. 4) Для того чтобы защитить данные в _time. Он у тебя может измениться из вне. И emit timeout(_time) отправит не правильные данные. 5) А я вот совершенно не уверен (по тому коду, что сейчас есть). Что произойдет, когда int secs станет отрицательным. t = t.addSecs(secs) останется инициализированным нулями? Я не проверял такого поведения. Такую ситуацию сам Qtime отследит: Возвратит отрицательное значение.
|
|
|
AD |
15.6.2009, 15:31
Сообщение
#19
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Возвратит отрицательное значение. Цитата QTime QTime::addSecs ( int s ) const
Returns a QTime object containing a time s seconds later than the time of this object (or earlier if s is negative). Note that the time will wrap if it passes midnight. Example: QTime n(14, 0, 0); // n == 14:00:00 QTime t; t = n.addSecs(70); // t == 14:01:10 t = n.addSecs(-70); // t == 13:58:50 t = n.addSecs(10 * 60 * 60 + 5); // t == 00:00:05 t = n.addSecs(-15 * 60 * 60); // t == 23:00:00 See also addMSecs(), secsTo(), and QDateTime::addSecs(). |
|
|
kwisp |
15.6.2009, 15:33
Сообщение
#20
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
|
|
|
Текстовая версия | Сейчас: 21.5.2024, 20:49 |