Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление к таймеру, Не получается увеличить время. 
V
    Опции темы
Alkash
Дата 15.9.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Доброго времени суток господа. Возникла проблема с таймером. На форме Комбобокс с обработчиком onselect:
Код

begin
 case atimebox.ItemIndex of
0: begin thistime:= 1*60*60; MinutesLeft:= 1*60*60;end;

1:  begin thistime:= 2*60*60; MinutesLeft:= 2*60*60; end;

 2: begin thistime:= 3*60*60; MinutesLeft:= 3*60*60; end;

3: begin thistime:= 4*60*60; MinutesLeft:= 4*60*60; end;

4: begin thistime:= 5*60*60; MinutesLeft:= 5*60*60; end;

5:  begin thistime:= 6*60*60; MinutesLeft:= 6*60*60; end;

6:  begin thistime:= 12*60*60; MinutesLeft:= 12*60*60; end;
 end;

end;


Срабатывает таймер :
Код

var
hr, mn, sc: Integer;tmp: string;
begin
MinutesLeft := MinutesLeft - 1;
hr := MinutesLeft div 3600;
mn := (MinutesLeft - hr * 3600) div 60;
sc := MinutesLeft - hr * 3600 - mn * 60;


tmp := Format('%2.2d:%2.2d:%2.2d', [hr, mn, sc]);
Label2.Caption:= tmp;

end;


В label выводится результат работы таймера. Собственно проблема в том, что у меня не выходит накинуть сверху времени. Когда уже работает таймер. Тоесть - Код устанавливает время выполнения, и отсчитывает время до окончания. А я не могу увеличить время выполнения в процессе, пробовал увеличивать minutesleft(глобальная переменная) - не корректно. Подскажите - как мне реализовать подобную задачку?


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Romikgy
Дата 15.9.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



остановить таймер ,
изменить значения,
запустить таймер


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alkash
Дата 15.9.2009, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Необходимо на лету изменять...не изменять, а добавлять...Чтобы не начать заново


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Romikgy
Дата 15.9.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



более точно опишите задачу,
и более полный код покажите ,
плюс у таймера какой интервал срабатывания


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alkash
Дата 15.9.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Задача - пишу программу управления небольшим интернет кафе.

Приведёный код - отсчитывает оставшееся время работы удалёного компьютера. Тоесть в боксе выбирают - от часа до 12 часов, и поехал отсчёт работы. В приведёном - всё работает прекрасно. А вот с продлением работы компьютера(допустим пользователь оплатил ещё полчаса) - большие проблемы.

 Интервал таймера 1000.



Это сообщение отредактировал(а) Alkash - 15.9.2009, 20:19


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Romikgy
Дата 15.9.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Alkash @  15.9.2009,  15:54 Найти цитируемый пост)
MinutesLeft 

просто добавить к этой переменой полчаса , что нельзя?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alkash
Дата 15.9.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Пробовал, не верно получается. Допусти по таймера - 2:45:39 - при накидывани 30 минут - просто округляется до 3: 00:00


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
THandle
  Дата 15.9.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Alkash, а почему бы не попробовать работать с TDateTime?

Типа:

Код

procedure TForm2.Button1Click(Sender: TObject);
var
  t1, t2: TDateTime;
begin
  t1 := Now;
  ShowMessage(TimeToStr(t1));
  t2 := t1 + StrToTime('00:20:00');
  ShowMessage(TimeToStr(t2));
end;

PM   Вверх
Alkash
Дата 15.9.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



А если изменится системное время?) Вот поэтому и бьюсь с внутренним таймером(


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Keeper89
Дата 15.9.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Alkash, вдруг это как? БИОС полетит или пользователи под админом изменят?
Цитата(Alkash @  15.9.2009,  23:10 Найти цитируемый пост)
Пробовал, не верно получается. Допусти по таймера - 2:45:39 - при накидывани 30 минут - просто округляется до 3: 00:00 

Я. честно говоря, не понимаю как это округляет? Может неверное преобразование из числа в чч:мм:сс и обратно?


--------------------
PM MAIL WWW   Вверх
Romikgy
Дата 15.9.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Alkash @  15.9.2009,  21:10 Найти цитируемый пост)
Допусти по таймера - 2:45:39 - при накидывани 30 минут - просто округляется до 3: 00:00 

покажи как делаешь?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alkash
Дата 15.9.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



На работе код к сожалению) Но в кратце - беру минуты - и прибавляю их к minutesleft. 


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Romikgy
Дата 15.9.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



с работы покажешь код


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Keeper89
Дата 16.9.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Я бы считал все в секундах, а не в минутах, если секунды нужны (судя по коду). Плюс можно перейти на раздельное вычисление часов, минут и секунд заодно убрав некошерные операции деления в таймере.

Ну и ждем код. smile  


--------------------
PM MAIL WWW   Вверх
Alkash
Дата 16.9.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Добавляю минуты к минутам
Код

procedure TfmVICAClient.Button2Click(Sender: TObject);
begin
 minutesleft:=minutesleft+ (strtoint(mtimeedit.text)*60);
end;


и обрабатываю во втором таймере с интервалом 1000

Код

var
hr, mn, sc: Integer;tmp: string;
begin
MinutesLeft := MinutesLeft - 1;
hr := MinutesLeft div 3600;
mn := (MinutesLeft - hr * 3600) div 60;
sc := MinutesLeft - hr * 3600 - mn * 60;

//sc:= sc-1;
tmp := Format('%2.2d:%2.2d:%2.2d', [hr, mn, sc]);
Label2.Caption:= tmp;
end;



--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.