Сейчас на форуме: (+2 невидимых)

 eXeL@B —› Оффтоп —› подправить прогу Delphi
Посл.ответ Сообщение


Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 28 мая 2011 23:47
· Личное сообщение · #1

Есть тут программа для игры типа Брейн-ринг. Но там проблема с отсчетом времени.
Если выставить 3 команды и двумя из них ответить на вопрос неверно
(ответ производится кнопкой F5 или F6 с клавиатуры или кнопками джойстика),
то оставшееся время для ответа третей команды доходит не до 0
(там обратный отсчет времени), а до 3 сек.
Есть исходники. Кто-то может помочь разобраться почему так?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 29 мая 2011 02:36
· Личное сообщение · #2

Если есть исходники в чём проблемма то?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 29 мая 2011 09:31
· Личное сообщение · #3

Isaev
Да что-то не смог пока что понять причину такой ошибки и не нашел соотв. куска кода




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 29 мая 2011 10:30
· Личное сообщение · #4

На паблик выложить нельзя?

-----
Yann Tiersen best and do not fuck





Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 29 мая 2011 22:20
· Личное сообщение · #5

PE_Kill
Можно, вот

26ff_29.05.2011_EXELAB.rU.tgz - Source.rar




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 мая 2011 09:09
· Личное сообщение · #6

Что то я не понял как воспроизвести ситуацию.

PS. Код ужасен, самое дерьмовое, что очень много функций работы со временем исполняет асинхронный PostMessage

-----
Yann Tiersen best and do not fuck





Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 30 мая 2011 10:33
· Личное сообщение · #7

PE_Kill
Вот эти правила подгружай(что в прикрепленном файле).
Там я поставил 3 кнопки в настройках (3 команды) и время раунда небольшое.
Вобщем, жмем "Новый вопрос", дажее "Время", жмем F5, на вопрос верен ли ответ, отвечаем "НЕТ",
жмем F6, на вопрос опять отвечаем НЕТ. И ждем оставшееся время... Оно дойдет не до 0, а до 3 сек и сорвется.


1a73_29.05.2011_EXELAB.rU.tgz - test.rl




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 31 мая 2011 11:48
· Личное сообщение · #8

Ошибка вот здесь:
Code:
  1. if Rules.IsLeftTime then begin // либо оставшееся
  2.   SetTimer(frmMain.Handle,IDTimer1,Rules.RoundTime*1000 + ST - Times[CP],nil);
  3.   PostMessage(frmSignal.Handle,CM_BADANSWER,Rules.RoundTime - frmTime.CurrentTime,0);
  4. end;

SetTimer ставит оконный таймер, который и прервет тест, а PostMessage рисует сколько секунд осталось. Как видно, что данные абсолютно разные. Время, передаваемое в PostMessage как раз больше на 3 секунды. Как править не знаю, т.к. не в курсе логики программы.

-----
Yann Tiersen best and do not fuck





Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 июня 2011 13:21
· Личное сообщение · #9

PE_Kill
Спасибо.
А как ты понял, что время в postMessage на 3 сек больше? Поставил бряк?




Ранг: 107.3 (ветеран), 5thx
Активность: 0.20.04
Статус: Участник

Создано: 01 июня 2011 21:34
· Личное сообщение · #10

Mavlyudov пишет:
А как ты понял, что время в postMessage на 3 сек больше?

написано же: Шаман




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 01 июня 2011 21:37
· Личное сообщение · #11

Mavlyudov пишет:
А как ты понял, что время в postMessage на 3 сек больше?

ты же сам сверху написал )))

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 01 июня 2011 22:59
· Личное сообщение · #12

Mavlyudov пишет:
А как ты понял, что время в postMessage на 3 сек больше? Поставил бряк?

Сделал логирование переменных, отвечающих за время. Ну а дальше посмотрел логи.

-----
Yann Tiersen best and do not fuck



 eXeL@B —› Оффтоп —› подправить прогу Delphi

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати