program Project1;
uses Messages, Windows;
{$R *.RES}
function KeepRunning: Boolean;
var
Msg: TMsg;
begin
Result := True;
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin
if (Msg.Message = WM_QUIT) then Result := False;
DispatchMessage(Msg);
end;
end;
function OnTheHour: Boolean;
begin
{ Это действительно проверяется в течение одной секунды }
{ (или меньше) для проверки наступления нового часа, }
{ когда нам необходимо запустить нашу задачу на выполнение }
Result := (GetTickCount mod
(1 * 60{min} * 60{sec} * 1000{msec}) < 1000);
end;
const
filetocheck = 'c:\somedir\somefile.ext';
magicsize = 1000000;
var
f: file;
size: longint;
begin
{ проверка наступления нового часа с момента запуска системы }
while keeprunning do begin
{ проверяем наступление часа }
if onthehour then begin
{ открываем файл с размером записи 1 байт }
{ и проверяем его размер }
assignfile(f,filetocheck);
reset(f,1);
size := filesize(f);
closefile(f);
{ теперь проверяем изменение размера файла }
if (size >= MAGICSIZE) then begin
{ Предпринимаем какие-то действия }
end;
{ Теперь "сидим" в этом участке кода }
{ и ожидаем очередного часа, здесь можно }
{ предусмотреть выход из программы или иное действие }
while (KeepRunning and OnTheHour) do
{ничего};
end;
end;
end.