{$MODE FPC} 			//диалект FPC
{$COPERATOR ON}		//Allow C like operators	
	//Включите в настройках компилятора поддержку C подобных операторов, это указание  может не работать
program TimeLimit;

uses SysUtils, DateUtils;

type f=file;
var		
	MyFile:  F; 			//нетипизированый файл
const 
	path = '';			//путь
	SleepTime : word=2;	//перерыв между записями, положительное число

function Date():string;
	//функция возращает текущую дату строкой
Var
	D : TDateTime;
begin
	D:=Now;
	Date:=IntToStr(YearOf(D));
	if (MonthOf(D)<10) then Date+='0';
	Date+=IntToStr(MonthOf(D));
	if (DayOf(D)<10) then Date+='0';
	Date+=IntToStr(DayOf(D));
end;

procedure OpenOrCreateFile (const Name: string; var WorkFile:F); 	
	//Open Or Create File:) , где Name -- имя файла, WorkFile -- файловая переменная
begin
	assign(WorkFile,(path+Name+'.txt'));		//MyFile -- переменная-файл
	If FileExists(Name) Then	
		reset(WorkFile)	//append  (WorkFile)		//открытие на редактирование
	else 
		rewrite(WorkFile);
end;
	
procedure print (var WorkFile:F);
	//печатает дату в файл
	
	//поидее должна печатать новую дату, если комп не работал/его выключали
	//или писать новую дату на место старой даты.
var 
	s: string;
begin
	{у меня есть сильное сомнение по оптимальности данного разветления}
	if FILEPOS(WorkFile)<>0 then begin		//если сегодня машина уже работала
		seek(WorkFile, FILEPOS(WorkFile)-1);
		blockread(MyFile, s, 1);
		s:=copy(s, 7, 5);					//до скольки работала
		if ((StrToTime(s) - TimeOf(now)) <> SleepTime) then begin 	//если машину выключали 
			seek(WorkFile, FILEPOS(WorkFile)+1);	//inc(seek);
			s:=( TimeToStr(Time)+ '-' +TimeToStr(Time){+#10#13} );
			blockwrite(MyFile,s , 1)			//напис новую дату
		end
		else begin 	//если машину не выключали		//написать новую дату на месте старой
				blockread(MyFile, s, 1);
				delete (s, 7, 5);
				insert(DateToStr(TimeOf(now)), s, 7);
				blockwrite(MyFile, s, 1) 
		end;
	end
	else 
		s:=( TimeToStr(Time)+ '-' +TimeToStr(Time));
		blockwrite(MyFile, s , 1 )//напис новою дату
end;
	
begin 
	repeat
		OpenOrCreateFile(Date(),MyFile);	//имя файла -- текущаяы дата
		print(MyFile);				//запись
		close(MyFile);				//закрыть файл
		sleep(SleepTime);
	until true;
end.