Цитата:
Сообщение от poli-smen
Узнать текущую дату можно функцией Date. Сравнивать даты обычной операцией сравнения.Дата меняется раз в сутки.В каком смысле?TTimer - это достаточно гуманный способСкорее всего ты в обработчике таймера занимаешь память, но не освобождаешь, вот и утечка. Сам TTimer утечек памяти не делает.
|
ок, смотрите пример:
Код:
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 - но эффект тот же, потребление памяти увеличивается
