Модераторы: 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   Вверх
Romikgy
Дата 16.9.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alkash @  16.9.2009,  07:01 Найти цитируемый пост)
Добавляю минуты к минутам

по коду похоже что работаешь с секундами ,
да и таймер секундный


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

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


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


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

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



Точно, уплю...просто весь день работал с минутами - а под конец уже начал с секундами...Однако - как быть то в этой ситуации? Я уже чё только не перепробовал


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


Эксперт
****


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

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



Как можно из MinutesLeft выражать секунды, там из попросту нет.
Судя по коду работа ведется в секундах, а таймер идет в минутах  smile 

Поэтому, чтобы прибавить 30 минут надо выразить это в секундах:
Код

  minutesleft := minutesleft + 30*60;


З.Ы. Я бы советовал привести все у секундам (если уже выбрали этот путь), чтобы код стал читаемым.

Добавлено через 5 минут и 8 секунд
Гы, Romikgy меня опередил  smile 


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


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


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

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



MinutesLeft - переменная глобальная.
И я как то не понимаю, чем
Код

minutesleft:=minutesleft+ (strtoint(mtimeedit.text)*60)

отличается от 
Код

 minutesleft := minutesleft + 30*60;



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


Эксперт
****


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

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



З.Ы. И еще - если не хочется работать с TTime, можно сделать свой маленький класс и считать значения там с функциями декремента и добавления времени.

Добавлено через 43 секунды
Alkash, у меня инкремент в 30 минут работает исправно...


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


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


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

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



MinutesLeft - переменная глобальная.
И я как то не понимаю, чем
Код

minutesleft:=minutesleft+ (strtoint(mtimeedit.text)*60)

отличается от 
Код

 minutesleft := minutesleft + 30*60;


Добавлено через 43 секунды
Моя конструкция как-то не может этим похвастаться)))


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


Эксперт
****


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

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



А так
Код

minutesleft := minutesleft + 30*60;

тоже не работает?


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


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


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

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



Неа, ни в какую


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


Эксперт
****


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

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



У меня в проекте только это:
Код

procedure TForm2.Button1Click(Sender: TObject);
begin
  MinutesLeft := MinutesLeft + 30*60;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  MinutesLeft := 60*60;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
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]);
  Caption:= tmp;
end;



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


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


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

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



Вот собрал тестовую конструкцию. Которая не хочет работать)

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Test.rar 5,13 Kb


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


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


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

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



А-а-а-а, заработало) Всем спасибо) 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Test.rar 5,13 Kb


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


Эксперт
****


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

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



В чем же было дело?


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


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


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

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



Цитата(Alkash @  16.9.2009,  09:10 Найти цитируемый пост)
Однако - как быть то в этой ситуации? Я уже чё только не перепробовал 

брекпоинты пробовал ?
Цитата(Alkash @  16.9.2009,  09:43 Найти цитируемый пост)
Вот собрал тестовую конструкцию. Которая не хочет работать) 

полностью тестовое )) даже пас файл девственно чист smile



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

PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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