![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() Ребят, у меня последний вопрос, который меня очень сильно интересует
![]() Подскажите кто гуру - вот мне надо делать опрос текущей даты и сравнивать с заданной, если они равны - то выполнять действие. Если я сделаю это с помощью TTimer - какие промежутки опроса по времени сделать, и будет ли такой способ есть память? Может существует более гуманный способ? Спрашиваю это потому что сделав опрос через TTimer и поставив интервал в 1 секунду - у меня запущенное приложение медленно, по 4КБ но жрет память ![]() ![]() |
#17
|
|||||
|
|||||
![]() Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
#18
|
|||
|
|||
![]() Цитата:
ок, смотрите пример: Код:
var current_time: TDateTime; change_time: string; begin current_time := time(); change_time := ('11:00:00'); if timetostr(current_time) = change_time then showmessage('test'); end; код чисто для примера. Вставляю код в таймер, ставлю интервал у таймера - минуту (60000), переменную change_time выставляю на 5 минут больше текущего времени, запускаю прогу, открываю диспетчер задач, смотрю на потребление памяти. При старте у меня 2944КБ потребление, через минуту 2952КБ и т.д. по возрастающей (+8 КБ). За сутки работы этого кода, размер потребления памяти по диспетчера задач увеличился с 3 до 9 МБ ![]() Ставлю Timer1.Enabled := false; - потребление памяти не увеличивается ни на байт. Где ошибка? ![]() ЗЫ: Delphi 7 Enterprise (Build 4.453), Windows XP SP3. ЗЫ2: Предполагаю что такую утечку дают функция timetostr, она выделяет память под значение, но не освобождает её... ![]() Пробовал сделать переменную mytime := timetostr(current_time); и сравнивать mytime с change_time - но эффект тот же, потребление памяти увеличивается ![]() Последний раз редактировалось Ahton, 17.04.2014 в 06:30. |
#19
|
||||
|
||||
![]() Цитата:
Код:
... if StrToTime('11:00:00') = Time then ShowMessage('test'); ... З.Ы. Здесь надо учесть один нюанс - равенство возможно ни когда не будет выполнено, поскольку конкретное время бывает только раз за сутки, а таймер может в этот момент и не сработать, поэтому лучше выставить условие как >= Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 17.04.2014 в 06:59. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Ahton (17.04.2014)
|
#20
|
|||
|
|||
![]() А есть какой то вариант сверки времени, чтобы было без утечек?
в моем случае мне нужно в определенное время запустить выполнение действия и программа должна месяцами висеть и делать одно и тоже действие в одно и то же время - я кроме как по таймеру, не умею сравнивать время ![]() |
#21
|
||||
|
||||
![]() А где смысл в том чтоб держать резидента кругломесячно в памяти, проще запускать его из планировщика заданий, что-то делать необходимое и вырубаться после исполнения. Можно оформить небольшой утилитой, имхо
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#22
|
|||
|
|||
![]() А если допустить что есть нужна в "резиденте" ?
![]() Неужели делфи не может такую банальную вещь как сравнение времени и запуск в нужное время? А если какой нибудь человек решит написать свой планировщик - сравнение же должно быть какое то, а получается что сравнение жрет память и планировщик будет с утечками памяти - просто пестня ![]() может время сравнивать не как строку? |
#23
|
||||
|
||||
![]() Цитата:
Делфи может многое - она как топор, всё от в-руках-его-держащего зависит - кто-то кроме как дровишки для мангала порубить в выходные, а некоторые могут им и колоссы сваять, такие напр. как в Кижах в наследство нам достались шедевры деревяного зодчества... ![]() Это так, к слову, а по теме - не используйте вар секцию в обработчике таймера, не выполняйте весь код в нём, лучше в отдельные функции и процедуры это дело оформить, поменьше сравнений аля присвоений, и утечек не будет - СР достаточно умна для этого, многое прощает, но всё же нужно прикидывать детали реализации самостоятельно, имхо. Нужна конкретика - пжлст, показывайте код, будем поглядеть Я не понял Вашего вопроса, но всё же Вам на него отвечу! |