Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2014, 23:08   #11
Wind1
 
Регистрация: 12.10.2012
Сообщений: 5
По умолчанию

Стандартный таймер Delphi - минмальный период примерно 55мс. Тут либо API таймер винды, либо гораздо удобнее таймеры от Jedi (точность 1 мс), в разнообразных вариантах. "Вообще рекомендую" (простите за рекламу) эту "библиотеку" - мощная, опенсорс, малоглючная и т.д.
Wind1 вне форума Ответить с цитированием
Старый 17.04.2014, 23:58   #12
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Какие на фиг миллисекунды??? Из топика видно, что это очередной будильник. А теперь поднимите руки, кому нужно, чтоб будильник сработал с точностью до миллисекунд??? В примерах выше не были учтены секунды, и код бы не сработал НИКОГДА, вот я и дал другой вариант. Хошь с точностью до минуты, хошь, до секунды. Спор возник, потому что топикстартер уточнил, что таймер работает раз в минуту, а Streletz забыл упомянуть, что его код должен работать раз в секунду. Кто виноват?
P.S. Лично я бы в подобной задаче использовал поток без таймера.

Последний раз редактировалось XE5; 18.04.2014 в 00:04.
XE5 вне форума Ответить с цитированием
Старый 18.04.2014, 03:22   #13
Ahton
 
Регистрация: 03.06.2008
Сообщений: 6
По умолчанию

спасибо всем за ответы
Нет, это не очередной будильник и точность до мс не важна, программа нужна для своих нужд по работе, для генерирования расписаний для программы вещания.

Кто нибудь проверял утечки памяти? У меня strtotime утекает на Delphi 7 и на delphi 2010.

XE5 - можете показать пример реализации потока без таймера? Я начинающий, очень интересно увидеть реализацию без компонента "таймер"
Ahton вне форума Ответить с цитированием
Старый 18.04.2014, 09:47   #14
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

to Ahton
Цитата:
можете показать пример реализации потока без таймера? Я начинающий, очень интересно увидеть реализацию без компонента "таймер"
Примеров реализации с использованием потоков в сети довольно много.
Вот сразу несколько из них: Как заменить sleep в потоке чтобы получить задержку 5 милисекунд.
Цитата:
программа нужна для своих нужд по работе, для генерирования расписаний для программы вещания.
В точности до мс здесь, пожалуй, действительно нет необходимости. Хотя погрешность +/-1 минута в сетке вещания могут заметить (ИМХО).
Цитата:
У меня strtotime утекает на Delphi 7 и на delphi 2010
Код в студию!
to XE5
Цитата:
Лично я бы в подобной задаче использовал поток без таймера.
И, что это даст? При интервале порядка 60000 это даст такую же погрешность, что и приведённый вариант с FormatDateTime('hh:mm', Time)
Цитата:
Хошь с точностью до минуты, хошь, до секунды
Что бы получить точность 1 сек нужно
Цитата:
if FormatDateTime('hh:mm:ss', Time) = change_time then
begin
Timer1.Enabled := false;
showmessage('test');
end;
Без обид, но об этом выше как-то не упомянуто...
Цитата:
Кто виноват?
1 из 2х "вечных" вопросов. И, такжеже без обид, 1 из столь же "вечных" тем для холивара. Только раздел не для этого, да и холиварить здесь в общем-то и не о чем.
Streletz вне форума Ответить с цитированием
Старый 18.04.2014, 22:22   #15
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
При интервале порядка 60000 это даст такую же погрешность
Какой интервал в потоке? Не понимаешь о чём речь, лучше промолчи.
XE5 вне форума Ответить с цитированием
Старый 18.04.2014, 23:32   #16
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Ahton Посмотреть сообщение
можете показать пример реализации потока без таймера? Я начинающий, очень интересно увидеть реализацию без компонента "таймер"
Пока лучше тебе на эти примеры не смотреть. Пока не сможешь понять их вредоносную сущность.
northener вне форума Ответить с цитированием
Старый 18.04.2014, 23:44   #17
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
вредоносную сущность
Потоки вредны? Не не слышали. В пакете инди есть замечательный контрол IdThreadComponent, который значительно упрощает создание потоков. Вот код простого будильника без таймеров.

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdThreadComponent1.Start; // запустили поток
end;

procedure TForm1.IdThreadComponent1Run(Sender: TIdThreadComponent);
begin
  if TimeToStr(Time) = '23:41:05' then
    begin
      IdThreadComponent1.Stop; // остановили поток
      ShowMessage('Время');
    end;
  sleep(1000); // ждём секунду
end;
Работает с точностью до секунды.

Последний раз редактировалось XE5; 19.04.2014 в 00:35.
XE5 вне форума Ответить с цитированием
Старый 19.04.2014, 00:03   #18
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
Потоки вредны?
Да вредны. Если они всего лишь дополнительная сущность позволяющая не думать головой. Про пакет Инди лучше мне и не напоминай. Этот продукт "троешников по натуре своей" оказался встроенным в Дельфи только по причине лени и жлобства борландовцев и их приемников.
northener вне форума Ответить с цитированием
Старый 19.04.2014, 00:17   #19
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
замечательный контрол IdThreadComponent
Пока не встаёт вопрос, например, о синхронизации...
northener, прав. Лишний раз поток делать не стоит особенно, на основе Indy.
Streletz вне форума Ответить с цитированием
Старый 19.04.2014, 00:33   #20
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Пока не встаёт вопрос, например, о синхронизации...
До конца дочитайте.
Цитата:
Лишний раз поток делать не стоит
Тогда и процессоры многоядерные покупать не стоит.
Цитата:
Сообщение от northener Посмотреть сообщение
Про пакет Инди лучше мне и не напоминай.
А я и не тебе написал, а топикстартеру в ответ на просьбу показать пример потока. Просто я по твоему сообщению увидел просьбу.

Последний раз редактировалось XE5; 19.04.2014 в 00:59.
XE5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение процедуры через определенное время 2909 Общие вопросы Delphi 1 17.05.2013 20:52
Утечки памяти YourLastSong Общие вопросы C/C++ 26 02.11.2011 22:56
утечки памяти KOLANICH Общие вопросы C/C++ 3 30.01.2011 00:15
Как приостановить выполнение макроса на определенное время? Ranel Microsoft Office Excel 6 16.06.2009 09:27
Выполнение действия в заданное время WOWan234 Помощь студентам 6 02.05.2007 01:52