Список выходных дней в 2012 году на странице http://www.superjob.ru/proizvodstvennyj_kalendar/2012/ приведен производственный календарь.
задача получить точно такой же календарь в массиве элементов
определим структуру данных
TdateM=record ddate1:Tdate; // Дата FreeDay:boolean; // True - cвободный день False - рабочий день end;
var
DateM:array of TdateM; DateMCount:integer;
для работы функции скачивания данных из интернета нам понадобится модуль WinInet функция получения контента с сайта приведена в статье http://netsoftware.ucoz.ru/news/skachat_fajl_iz_interneta_v_peremennuju/2012-04-12-31 Function GetCursFile (const fileURL:string): string; я взял ее за основу для получения контента с сайта superjob.ru
напишем несколько вспомогательных функций
// добавляем дату в массив Procedure AddDateM(DateValue:Tdate;FreeDay:boolean=false); begin DateMCount:=DateMCount+1; setlength(DateM,DateMCount); DateM[DateMCount-1].ddate1:=DateValue; DateM[DateMCount-1].FreeDay:=FreeDay; end;
// получение значений Function GetAllNumber(s:string):string; var s2:string; x,l:integer; begin s2:=''; l:=length(S); for x:=1 to l do if ((s[x]>='0') and (s[x]<='9')) or (s[x] in ['.',',']) then s2:=s2+s[x]; result:=s2; end;
// получить слово без доп знаков Function GetWordFromStr(s:string):string; var x,l:integer; s2:string; begin s2:=''; l:=length(s); for x:=1 to l do if s[x] in ['А'..'Я','а'..'я','A'..'Z','a'..'z',' '] then s2:=s2+s[x]; result:=s2; end;
Function GetIndexMonth(s:string):integer; // возвращает индекс месяца const MonthText:array [1..12] of string = ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'); var i:integer; begin result:=1; for I:=1 to 12 do if s=MonthText[i] then begin result:=i; exit; end; end;
// Обновить массив для производтсенного календаря
Procedure UpdateDate(Text,years:string); var s:string; x:integer; html_kalendar_beg:boolean; tabl:integer; SMonth:string; MonthInt:Integer; SdayRab:string; DayStr:string; sDayFree:string; TextFromList:TstringList; begin TextFromList:=TstringList.create; TextFromList.text:=Text; DateMCount:=0; html_kalendar_beg:=false; tabl:=0; SdayRab:=' <td>'; sDayFree:=' <td bgcolor="#FFCCCC" class=holiday>'; SMonth:='01'; for X:=0 to TextFromList.Count-1 do begin s:=TextFromList[x]; if pos('<table class=html_kalendar width="100%" border="0" cellspacing="0" cellpadding="10">',s)>0 then begin html_kalendar_beg:=true; tabl:=tabl+1; end; if html_kalendar_beg then begin if pos('</table>',s)>0 then begin tabl:=tabl-1; end else if pos('table',s)>0 then begin tabl:=tabl+1; end; if tabl=0 then html_kalendar_beg:=false; if (pos('class=head',s)>0) and (pos(' ',s)=0) then begin SMonth:=form1.Memo1.Lines[x+1]; SMonth:=GetWordFromStr(SMonth); MonthInt:=GetIndexMonth(SMonth); end; if pos(SdayRab,s)>0 then begin DayStr:=copy(s,length(SdayRab)+1,pos('</td>',s)-length(SdayRab)-1); DayStr:=GetAllNumber(DayStr); AddDateM(StrToDate(FormatFloat('00',strtoint(DayStr))+'.'+FormatFloat('00',MonthInt)+'.'+years),false); end; if pos(sDayFree,s)>0 then begin DayStr:=copy(s,length(sDayFree)+1,pos('</td>',s)-length(sDayFree)-1); DayStr:=GetAllNumber(DayStr); AddDateM(StrToDate(FormatFloat('00',strtoint(DayStr))+'.'+FormatFloat('00',MonthInt)+'.'+years),true); end; end; end; TextFromList.free; end;
// тип для на входе дата на выходе // True - cвободный день False - рабочий день Function GetDateFree(DateValue:Tdate):boolean; var x:integer; begin result:=false; for X:=0 to DateMCount-1 do if DateM[x].ddate1=DateValue then begin result:=DateM[x].FreeDay; exit; end; end;
Цикл от одной даты до другой
var x:integer; s:string; begin UpdateDate(form1.Memo1.Lines.Text,'2012'); form1.Memo2.Lines.Clear;
for X:=round(StrtoDate('01.01.2012')) to round(StrtoDate('31.12.2012')) do begin if GetDateFree(x) then s:='FreeDay' else s:='WorkDay'; form1.Memo2.Lines.Add(DateTostr(x)+'='+s); end; end;
полученный файл полученный список /05_parsing_sajta_super_job.zip взято с сайта http://www.superjob.ru/proizvodstvennyj_kalendar/2012/
01.01.2012=FreeDay 02.01.2012=FreeDay 03.01.2012=FreeDay 04.01.2012=FreeDay 05.01.2012=FreeDay 06.01.2012=FreeDay 07.01.2012=FreeDay 08.01.2012=FreeDay 09.01.2012=FreeDay 10.01.2012=WorkDay 11.01.2012=WorkDay 12.01.2012=WorkDay 13.01.2012=WorkDay 14.01.2012=FreeDay 15.01.2012=FreeDay 16.01.2012=WorkDay 17.01.2012=WorkDay 18.01.2012=WorkDay 19.01.2012=WorkDay 20.01.2012=WorkDay 21.01.2012=FreeDay 22.01.2012=FreeDay 23.01.2012=WorkDay 24.01.2012=WorkDay 25.01.2012=WorkDay 26.01.2012=WorkDay 27.01.2012=WorkDay 28.01.2012=FreeDay 29.01.2012=FreeDay 30.01.2012=WorkDay 31.01.2012=WorkDay 01.02.2012=WorkDay 02.02.2012=WorkDay 03.02.2012=WorkDay 04.02.2012=FreeDay 05.02.2012=FreeDay 06.02.2012=WorkDay 07.02.2012=WorkDay 08.02.2012=WorkDay 09.02.2012=WorkDay 10.02.2012=WorkDay 11.02.2012=FreeDay 12.02.2012=FreeDay 13.02.2012=WorkDay 14.02.2012=WorkDay 15.02.2012=WorkDay 16.02.2012=WorkDay 17.02.2012=WorkDay 18.02.2012=FreeDay 19.02.2012=FreeDay 20.02.2012=WorkDay 21.02.2012=WorkDay 22.02.2012=WorkDay 23.02.2012=FreeDay 24.02.2012=WorkDay 25.02.2012=FreeDay 26.02.2012=FreeDay 27.02.2012=WorkDay 28.02.2012=WorkDay 29.02.2012=WorkDay 01.03.2012=WorkDay 02.03.2012=WorkDay 03.03.2012=FreeDay 04.03.2012=FreeDay 05.03.2012=WorkDay 06.03.2012=WorkDay 07.03.2012=WorkDay 08.03.2012=FreeDay 09.03.2012=FreeDay 10.03.2012=FreeDay 11.03.2012=WorkDay 12.03.2012=WorkDay 13.03.2012=WorkDay 14.03.2012=WorkDay 15.03.2012=WorkDay 16.03.2012=WorkDay 17.03.2012=FreeDay 18.03.2012=FreeDay 19.03.2012=WorkDay 20.03.2012=WorkDay 21.03.2012=WorkDay 22.03.2012=WorkDay 23.03.2012=WorkDay 24.03.2012=FreeDay 25.03.2012=FreeDay 26.03.2012=WorkDay 27.03.2012=WorkDay 28.03.2012=WorkDay 29.03.2012=WorkDay 30.03.2012=WorkDay 31.03.2012=FreeDay 01.04.2012=FreeDay 02.04.2012=WorkDay 03.04.2012=WorkDay 04.04.2012=WorkDay 05.04.2012=WorkDay 06.04.2012=WorkDay 07.04.2012=FreeDay 08.04.2012=FreeDay 09.04.2012=WorkDay 10.04.2012=WorkDay 11.04.2012=WorkDay 12.04.2012=WorkDay 13.04.2012=WorkDay 14.04.2012=FreeDay 15.04.2012=FreeDay 16.04.2012=WorkDay 17.04.2012=WorkDay 18.04.2012=WorkDay 19.04.2012=WorkDay 20.04.2012=WorkDay 21.04.2012=FreeDay 22.04.2012=FreeDay 23.04.2012=WorkDay 24.04.2012=WorkDay 25.04.2012=WorkDay 26.04.2012=WorkDay 27.04.2012=WorkDay 28.04.2012=WorkDay 29.04.2012=FreeDay 30.04.2012=FreeDay 01.05.2012=FreeDay 02.05.2012=WorkDay 03.05.2012=WorkDay 04.05.2012=WorkDay 05.05.2012=WorkDay 06.05.2012=FreeDay 07.05.2012=FreeDay 08.05.2012=FreeDay 09.05.2012=FreeDay 10.05.2012=WorkDay 11.05.2012=WorkDay 12.05.2012=WorkDay 13.05.2012=FreeDay 14.05.2012=WorkDay 15.05.2012=WorkDay 16.05.2012=WorkDay 17.05.2012=WorkDay 18.05.2012=WorkDay 19.05.2012=FreeDay 20.05.2012=FreeDay 21.05.2012=WorkDay 22.05.2012=WorkDay 23.05.2012=WorkDay 24.05.2012=WorkDay 25.05.2012=WorkDay 26.05.2012=FreeDay 27.05.2012=FreeDay 28.05.2012=WorkDay 29.05.2012=WorkDay 30.05.2012=WorkDay 31.05.2012=WorkDay 01.06.2012=WorkDay 02.06.2012=FreeDay 03.06.2012=FreeDay 04.06.2012=WorkDay 05.06.2012=WorkDay 06.06.2012=WorkDay 07.06.2012=WorkDay 08.06.2012=WorkDay 09.06.2012=WorkDay 10.06.2012=FreeDay 11.06.2012=FreeDay 12.06.2012=FreeDay 13.06.2012=WorkDay 14.06.2012=WorkDay 15.06.2012=WorkDay 16.06.2012=FreeDay 17.06.2012=FreeDay 18.06.2012=WorkDay 19.06.2012=WorkDay 20.06.2012=WorkDay 21.06.2012=WorkDay 22.06.2012=WorkDay 23.06.2012=FreeDay 24.06.2012=FreeDay 25.06.2012=WorkDay 26.06.2012=WorkDay 27.06.2012=WorkDay 28.06.2012=WorkDay 29.06.2012=WorkDay 30.06.2012=FreeDay 01.07.2012=FreeDay 02.07.2012=WorkDay 03.07.2012=WorkDay 04.07.2012=WorkDay 05.07.2012=WorkDay 06.07.2012=WorkDay 07.07.2012=FreeDay 08.07.2012=FreeDay 09.07.2012=WorkDay 10.07.2012=WorkDay 11.07.2012=WorkDay 12.07.2012=WorkDay 13.07.2012=WorkDay 14.07.2012=FreeDay 15.07.2012=FreeDay 16.07.2012=WorkDay 17.07.2012=WorkDay 18.07.2012=WorkDay 19.07.2012=WorkDay 20.07.2012=WorkDay 21.07.2012=FreeDay 22.07.2012=FreeDay 23.07.2012=WorkDay 24.07.2012=WorkDay 25.07.2012=WorkDay 26.07.2012=WorkDay 27.07.2012=WorkDay 28.07.2012=FreeDay 29.07.2012=FreeDay 30.07.2012=WorkDay 31.07.2012=WorkDay 01.08.2012=WorkDay 02.08.2012=WorkDay 03.08.2012=WorkDay 04.08.2012=FreeDay 05.08.2012=FreeDay 06.08.2012=WorkDay 07.08.2012=WorkDay 08.08.2012=WorkDay 09.08.2012=WorkDay 10.08.2012=WorkDay 11.08.2012=FreeDay 12.08.2012=FreeDay 13.08.2012=WorkDay 14.08.2012=WorkDay 15.08.2012=WorkDay 16.08.2012=WorkDay 17.08.2012=WorkDay 18.08.2012=FreeDay 19.08.2012=FreeDay 20.08.2012=WorkDay 21.08.2012=WorkDay 22.08.2012=WorkDay 23.08.2012=WorkDay 24.08.2012=WorkDay 25.08.2012=FreeDay 26.08.2012=FreeDay 27.08.2012=WorkDay 28.08.2012=WorkDay 29.08.2012=WorkDay 30.08.2012=WorkDay 31.08.2012=WorkDay 01.09.2012=FreeDay 02.09.2012=FreeDay 03.09.2012=WorkDay 04.09.2012=WorkDay 05.09.2012=WorkDay 06.09.2012=WorkDay 07.09.2012=WorkDay 08.09.2012=FreeDay 09.09.2012=FreeDay 10.09.2012=WorkDay 11.09.2012=WorkDay 12.09.2012=WorkDay 13.09.2012=WorkDay 14.09.2012=WorkDay 15.09.2012=FreeDay 16.09.2012=FreeDay 17.09.2012=WorkDay 18.09.2012=WorkDay 19.09.2012=WorkDay 20.09.2012=WorkDay 21.09.2012=WorkDay 22.09.2012=FreeDay 23.09.2012=FreeDay 24.09.2012=WorkDay 25.09.2012=WorkDay 26.09.2012=WorkDay 27.09.2012=WorkDay 28.09.2012=WorkDay 29.09.2012=FreeDay 30.09.2012=FreeDay 01.10.2012=WorkDay 02.10.2012=WorkDay 03.10.2012=WorkDay 04.10.2012=WorkDay 05.10.2012=WorkDay 06.10.2012=FreeDay 07.10.2012=FreeDay 08.10.2012=WorkDay 09.10.2012=WorkDay 10.10.2012=WorkDay 11.10.2012=WorkDay 12.10.2012=WorkDay 13.10.2012=FreeDay 14.10.2012=FreeDay 15.10.2012=WorkDay 16.10.2012=WorkDay 17.10.2012=WorkDay 18.10.2012=WorkDay 19.10.2012=WorkDay 20.10.2012=FreeDay 21.10.2012=FreeDay 22.10.2012=WorkDay 23.10.2012=WorkDay 24.10.2012=WorkDay 25.10.2012=WorkDay 26.10.2012=WorkDay 27.10.2012=FreeDay 28.10.2012=FreeDay 29.10.2012=WorkDay 30.10.2012=WorkDay 31.10.2012=WorkDay 01.11.2012=WorkDay 02.11.2012=WorkDay 03.11.2012=FreeDay 04.11.2012=FreeDay 05.11.2012=FreeDay 06.11.2012=WorkDay 07.11.2012=WorkDay 08.11.2012=WorkDay 09.11.2012=WorkDay 10.11.2012=FreeDay 11.11.2012=FreeDay 12.11.2012=WorkDay 13.11.2012=WorkDay 14.11.2012=WorkDay 15.11.2012=WorkDay 16.11.2012=WorkDay 17.11.2012=FreeDay 18.11.2012=FreeDay 19.11.2012=WorkDay 20.11.2012=WorkDay 21.11.2012=WorkDay 22.11.2012=WorkDay 23.11.2012=WorkDay 24.11.2012=FreeDay 25.11.2012=FreeDay 26.11.2012=WorkDay 27.11.2012=WorkDay 28.11.2012=WorkDay 29.11.2012=WorkDay 30.11.2012=WorkDay 01.12.2012=FreeDay 02.12.2012=FreeDay 03.12.2012=WorkDay 04.12.2012=WorkDay 05.12.2012=WorkDay 06.12.2012=WorkDay 07.12.2012=WorkDay 08.12.2012=FreeDay 09.12.2012=FreeDay 10.12.2012=WorkDay 11.12.2012=WorkDay 12.12.2012=WorkDay 13.12.2012=WorkDay 14.12.2012=WorkDay 15.12.2012=FreeDay 16.12.2012=FreeDay 17.12.2012=WorkDay 18.12.2012=WorkDay 19.12.2012=WorkDay 20.12.2012=WorkDay 21.12.2012=WorkDay 22.12.2012=FreeDay 23.12.2012=FreeDay 24.12.2012=WorkDay 25.12.2012=WorkDay 26.12.2012=WorkDay 27.12.2012=WorkDay 28.12.2012=WorkDay 29.12.2012=WorkDay 30.12.2012=FreeDay 31.12.2012=FreeDay
|