Make(delphi) ver(4.04 build 185) Add(MainForm,2953706,70,84) { Width=613 Height=448 Caption="Расчёт солнечных и лунных затмений. --- Автор MAV ---" Position=1 link(onCreate,9458856:doEvent1,[]) } Add(InlineCode,510788,210,168) { @Hint=#47:Script of calculation of parameters of the moon| WorkPoints=#13:doCalculation| EventPoints=#13:onCalculation| VarPoints=#8:Calendar|6:Year_m|7:Month_m|5:Day_m|10:Day_week_m|6:Hour_m|9:Minutes_m|5:Phase|7:Eclipse|8:Type_Ecl| DataPoints=#4:Year| Code=#85://Расчёт солнечных и лунных затмений, а так же новолуний и полнолуний в заданный год.|14://Автор MAV |8://2011г.|48://На основе скрипта Э. Поулсена и А. Янковского |60://==========================================================|15:unit HiAsmUnit;|0:|9:interface|0:|17:uses Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|51: y,yy,y_out,y_Read,h1,d1,m9,c,uu,uuu,ud:Integer;|21: m,j,mu,mp:Double;|28: tex,Cal_y,mu_out:string;|9: public|19: Year:THI_Event;|29: onCalculation :THI_Event;|0:|56: procedure doCalculation(var _Data:TData; index:word);|51: procedure Calendar(var Data:TData; index:word); |48: procedure Year_m(var Data:TData; index:word);|49: procedure Month_m(var Data:TData; index:word);|47: procedure Day_m(var Data:TData; index:word);|52: procedure Day_week_m(var Data:TData; index:word);|48: procedure Hour_m(var Data:TData; index:word);|51: procedure Minutes_m(var Data:TData; index:word);|47: procedure Phase(var Data:TData; index:word);|49: procedure Eclipse(var Data:TData; index:word);|50: procedure Type_Ecl(var Data:TData; index:word);|5: end;|0:|14:implementation|36:procedure THiAsmClass.doCalculation;|3:var|59: a,b,d,e,f,r1,f0,m0,m1,b1,m5,m6,b6,s,c1,u,rp,ru,d9:Double;|27: t,t2,t3,j0,k,h,a1:Double;|18: g,k0,k9:Integer;|60://==========================================================|28://function floor, автор Tad.|33:function floor(x:double):integer;|5:begin|19: result:=Trunc(x);|40: if (result > x) then result:=result-1;|6:end; |62://========================================================== |38:function jdtkal(f,j,g:Double):Integer;|5:begin|13: f := f+0.5;|35: if (f >= 1) then begin f:= f-1; |10: j:= j+1;|6: end;|23: if (g= 0) then a:= j;|23: if (g= 1) then begin|36: a1:= floor((j/36524.25)-51.12264);|26: a := j+1+a1-floor(a1/4);|6: end;|14: b := a+1524;|32: c := floor((b/365.25)-0.3343);|23: d := floor(365.25*c);|26: e := floor((b-d)/30.61);|28: d := b-d-floor(30.61*e)+f;|11: m := e-1;|14: y := c-4716;|31: if (e > 13.5) then m := m-12;|29: if (m < 2.5) then y := y+1;|16: d1:= floor(d);|17: h := 24*(d-d1);|17: h1:= floor(h); |24: m9:= floor(60*(h-h1));|25: if (h >= 24) then begin|14: h1:= h1-24; |13: d1:= d1+1; |6: end;|26: ud:= floor(j) mod 7 + 1;|31: if (h >= 24) then ud:= ud+1;|6:end; |60://==========================================================|5:begin|38: y_Read := ReadInteger(_Data,Year,0);|51: if (y_Read < -4700) or (y_Read > 4700) then exit;|28: if (y_Read = 0) then exit;|35: if (y_Read > 0) then y := y_Read;|40: if (y_Read < 0) then y :=(y_Read + 1);|9: g := 1;|10: yy := y;|14: Cal_y :='G';|34: if (y < 1583) then begin g := 0;|14: Cal_y :='J';|6: end;|24: r1 := 4*ArcTan(1)/180;|11: uu := 0; |32: k0 := floor((y-1900)*12.3685);|23: t := (y-1899.5)/100;|12: t2 := t*t;|14: t3 := t*t*t;|22: j0 := 2415020+29*k0;|36: f0 := 0.0001178*t2-0.000000155*t3;|33: f0 := f0+0.75933+0.53058868*k0;|34: f0 := f0-0.000837*t-0.000335*t2;|25: m0 := k0*0.08084821133;|36: m0 := 360*(m0-floor(m0))+359.2242;|24: m0 := m0-0.0000333*t2;|25: m0 := m0-0.00000347*t3;|32: m1 := k0*7.171366127999999e-2;|36: m1 := 360*(m1-Trunc(m1))+306.0253;|24: m1 := m1+0.0107306*t2;|25: m1 := m1+0.00001236*t3;|25: b1 := k0*0.08519585128;|35: b1 := 360*(b1-floor(b1))+21.2964;|24: b1 := b1-0.0016528*t2;|25: b1 := b1-0.00000239*t3;|21: for k9 :=0 to 28 do|7: begin|18: j := j0+14*k9;|24: f := f0+0.765294*k9;|14: k := k9/2;|31: m5:= (m0+k*29.10535608)*r1;|32: m6:= (m1+k*385.81691806)*r1;|32: b6:= (b1+k*390.67050646)*r1;|27: f := f-0.4068*sin(m6);|39: f := f+(0.1734-0.000393*t)*sin(m5);|28: f := f+0.0161*sin(2*m6);|28: f := f+0.0104*sin(2*b6);|29: f := f-0.0074*sin(m5-m6);|29: f := f-0.0051*sin(m5+m6);|28: f := f+0.0021*sin(2*m5);|20: f := f+0.5/1440;|20: j := j+floor(f);|20: f := f-floor(f);|32: s := 5.19595-0.0048*cos(m5);|27: s := s+0.002*cos(2*m5);|26: s := s-0.3283*cos(m6);|28: s := s-0.006*cos(m5+m6);|29: s := s+0.0041*cos(m5-m6);|23: c1:= 0.207*sin(m5);|29: c1:= c1+0.0024*sin(2*m5);|26: c1:= c1-0.039*sin(m6);|29: c1:= c1+0.0115*sin(2*m6);|30: c1:= c1-0.0073*sin(m5+m6);|30: c1:= c1-0.0067*sin(m5-m6);|29: c1:= c1+0.0117*sin(2*b6);|35: d9:= abs(s*sin(b6)+c1*cos(b6));|31: u := 0.0059+0.0046*cos(m5);|26: u := u-0.0182*cos(m6);|28: u := u+0.0004*cos(2*m6);|29: u := u-0.0005*cos(m5+m6);|18: rp:= 1.2847+u;|18: ru:= 0.7404-u;|29: mp:= (1.5572+u-d9)/0.545;|29: mu:= (1.0129-u-d9)/0.545;|46: if (abs(sin(b6)) > 0.36) or (mp < 0) then |10: begin |14: tex := '';|17: mu_out := '';|7: end|8: else|20: if (uu = 1) then|10: begin |28: tex:= 'Лунное затмение';|41: if (mu >= 1) then mu_out := 'Полное';|57: if (mu < 1) and (mu > 0) then mu_out := 'Частичное';|43: if (mu < 0) then mu_out := 'Теневое'; |7: end|10: else |11: begin |31: tex:= 'Солнечное затмение';|41: if (mu >= 0) then mu_out := 'Полное';|44: if (mu < 0) then mu_out := 'Частичное';|8: end;|13: uuu:= uu;|18: jdtkal(f,j,g);|14: uu:= uu+1;|26: if (uu=2) then uu:= 0;|14: y_out:= y;|44: if (y_Read < 0) then y_out:=(y_out - 1);|31: _hi_OnEvent(onCalculation);|6: end;|4:end;|0:|59:procedure THiAsmClass.Calendar(var Data:TData; index:word);|5:begin|29: Data.data_type := data_str;|22: data.sdata := Cal_y;|4:end;|0:|57:procedure THiAsmClass.Year_m(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|22: data.idata := y_out;|4:end;|0:|58:procedure THiAsmClass.Month_m(var Data:TData; index:word);|5:begin|30: Data.Data_type := data_real;|18: data.rdata := m;|4:end;|0:|56:procedure THiAsmClass.Day_m(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|19: data.idata := d1;|4:end;|0:|61:procedure THiAsmClass.Day_week_m(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|19: data.idata := ud;|4:end;|0:|57:procedure THiAsmClass.Hour_m(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|19: data.idata := h1;|4:end;|0:|60:procedure THiAsmClass.Minutes_m(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|19: data.idata := m9;|4:end;|0:|56:procedure THiAsmClass.Phase(var Data:TData; index:word);|5:begin|29: Data.Data_type := data_int;|20: data.idata := uuu;|4:end;|0:|58:procedure THiAsmClass.Eclipse(var Data:TData; index:word);|5:begin|29: Data.data_type := data_str;|20: data.sdata := tex;|4:end;|0:|59:procedure THiAsmClass.Type_Ecl(var Data:TData; index:word);|5:begin|29: Data.data_type := data_str;|23: data.sdata := mu_out;|4:end;|0:|4:end.| link(onCalculation,1095630:In,[]) link(Year,1761611:Var2,[]) } Add(Edit,8605956,210,98) { Left=80 Top=10 Width=65 Text="" link(Str,9024379:FormatTime,[]) } Add(Button,9105266,84,161) { Left=5 Top=10 Width=70 Caption="Вычислить" link(onClick,10683687:doEvent3,[]) } Add(FormatStr,8830872,217,322) { DataCount=8 Mask="%1;%2;%3;%4;%5;%6;%7;%8;" link(onFString,13718796:doAdd,[]) link(Str1,3804113:Var2,[]) link(Str2,14757883:Month_,[]) link(Str3,14757883:Day_,[]) link(Str4,14757883:Day_week_,[]) link(Str5,14757883:Time_,[]) link(Str6,14757883:Phase_,[]) link(Str7,510788:Eclipse,[(265,310)(272,310)]) link(Str8,510788:Type_Ecl,[(272,314)(279,314)]) } Add(StringTable,13718796,336,322) { Top=35 Width=604 Height=385 Columns=#6:Год=40|8:Месяц=60|7:День=40|14:День недели=80|8:Время=50|12:Фаза луны=80|12:Затмения=120|16:Тип затмения=100| Grid=0 } Add(Hub,10683687,147,147) { InCount=3 OutCount=3 link(onEvent1,95878:In,[]) link(onEvent2,510788:doCalculation,[(200,160)(200,174)]) link(onEvent3,15275818:In,[]) } Add(Time,9024379,210,56) { Format="Y" } Add(Hub,13726589,105,224) { OutCount=3 link(onEvent1,14823904:doConvert,[]) link(onEvent2,14757883:doEvent1,[(173,237)(173,279)]) link(onEvent3,2142009:doCompare,[(166,244)(166,328)]) } Add(MultiElementEx,14757883,217,273) { @Hint=#49:Фирмирование данных для вывода в табличной форме.| link(Year,14823904:Year_,[]) link(Month,14823904:Month_,[]) link(Day,14823904:Day_,[]) link(Day_week,14823904:Day_week_,[]) link(Hour,14823904:Hour_,[]) link(Minutes,14823904:Minutes_,[]) link(Phase,510788:Phase,[(265,263)(286,263)(286,209)(265,209)]) } BEGIN_SDK Add(EditMultiEx,5703231,21,21) { WorkCount=#8:doEvent1| VarCount=#5:Year_|6:Month_|4:Day_|9:Day_week_|5:Time_|6:Phase_| DataCount=#4:Year|5:Month|3:Day|8:Day_week|4:Hour|7:Minutes|5:Phase| Width=370 Height=193 VOffset=84 HOffset=49 link(doEvent1,14749708:doEvent1,[]) link(Year_,5703231:Year,[]) link(Month_,1206938:Var1,[(83,182)(118,182)]) link(Day_,15786058:Var1,[(90,188)(160,188)]) link(Day_week_,4874658:Var1,[(97,195)(202,195)]) link(Time_,5259585:FString,[(104,201)(244,201)]) link(Phase_,9057180:Var1,[(111,206)(328,206)]) } Add(MultiElement,9057180,322,77) { link(Data1,5703231:Phase,[(328,28)(118,28)]) } BEGIN_SDK Add(EditMulti,4677777,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=258 Height=130 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,123)(209,123)]) } Add(If_else,4720075,63,63) { Op2=Integer(0) link(onTrue,12145830:doData,[]) link(onFalse,89286:doData,[]) link(Op1,4677777:Data1,[]) } Add(DoData,12145830,105,63) { Data=String(Новолуние) link(onEventData,8290722:doWork2,[]) } Add(DoData,89286,147,70) { Data=String(Полнолуние) link(onEventData,8290722:doWork3,[(193,76)]) } Add(Memory,15111181,203,63) { } Add(HubEx,8290722,189,63) { link(onEvent,15111181:doValue,[]) } END_SDK Add(MultiElement,3929779,35,238) { @Hint=#99:Корректировка для года: НЭ, до НЭ. Применимо при использовании IC без корректировки часового пояса.| AddHint(45,-9,200,39,@Hint) } BEGIN_SDK Add(EditMulti,4677777,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=286 Height=130 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,121)(251,121)]) } Add(If_else,4720075,63,63) { Type=2 Op2=Integer(0) link(onTrue,14225516:doStrCat,[]) link(onFalse,8208699:doStrCat,[]) link(Op1,4413471:Var2,[]) } Add(Memory,15111181,245,63) { } Add(StrCat,14225516,105,63) { Str2=" НЭ" link(onStrCat,4134751:doWork2,[]) link(Str1,9112101:Var2,[]) } Add(StrCat,8208699,147,70) { Str2=" до НЭ" link(onStrCat,12403039:doTrim,[]) link(Str1,9112101:Var3,[(153,47)]) } Add(HubEx,4134751,231,63) { link(onEvent,15111181:doValue,[]) } Add(GetDataEx,4413471,63,42) { link(Data,4677777:Data1,[]) } Add(Trim,12403039,189,70) { Char="-" link(onTrim,4134751:doWork3,[(235,76)]) } Add(GetDataEx,9112101,105,42) { Angle=3 link(Data,4413471:Var3,[]) } END_SDK Add(MultiElement,15786058,154,77) { link(Data1,5703231:Day,[(160,48)(90,48)]) } BEGIN_SDK Add(EditMulti,4677777,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=244 Height=123 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,120)(209,120)]) } Add(If_else,4720075,63,63) { Type=2 Op2=String(9) link(onTrue,12145830:doData,[]) link(onFalse,5801920:doStrCat,[]) link(Op1,3241032:Var2,[]) } Add(DoData,12145830,105,63) { Data=String(Григориан.) link(onEventData,1246183:doWork2,[]) link(Data,1871494:Var2,[]) } Add(Memory,15111181,203,63) { } Add(GetDataEx,3241032,63,42) { link(Data,4677777:Data1,[]) } Add(StrCat,5801920,147,70) { Str1="0" link(onStrCat,1246183:doWork3,[(193,76)]) link(Str2,1871494:Var3,[(160,47)]) } Add(HubEx,1246183,189,63) { link(onEvent,15111181:doValue,[]) } Add(GetDataEx,1871494,105,42) { Angle=3 link(Data,3241032:Var3,[]) } END_SDK Add(MultiElement,3812563,238,77) { link(Data1,5703231:Hour,[(244,38)(104,38)]) } BEGIN_SDK Add(EditMulti,4677777,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=251 Height=130 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,123)(209,123)]) } Add(If_else,4720075,63,63) { Type=2 Op2=String(9) link(onTrue,12145830:doData,[]) link(onFalse,5801920:doStrCat,[]) link(Op1,3241032:Var2,[]) } Add(DoData,12145830,105,63) { Data=String(Григориан.) link(onEventData,1246183:doWork2,[]) link(Data,1871494:Var2,[]) } Add(Memory,15111181,203,63) { } Add(GetDataEx,3241032,63,42) { link(Data,4677777:Data1,[]) } Add(StrCat,5801920,147,70) { Str1="0" link(onStrCat,1246183:doWork3,[(193,76)]) link(Str2,1871494:Var3,[(160,47)]) } Add(HubEx,1246183,189,63) { link(onEvent,15111181:doValue,[]) } Add(GetDataEx,1871494,105,42) { Angle=3 link(Data,3241032:Var3,[]) } END_SDK Add(MultiElement,14526763,280,77) { link(Data1,5703231:Minutes,[(286,33)(111,33)]) } BEGIN_SDK Add(EditMulti,4677777,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=244 Height=130 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,123)(209,123)]) } Add(If_else,4720075,63,63) { Type=2 Op2=String(9) link(onTrue,12145830:doData,[]) link(onFalse,5801920:doStrCat,[]) link(Op1,3241032:Var2,[]) } Add(DoData,12145830,105,63) { Data=String(Григориан.) link(onEventData,1246183:doWork2,[]) link(Data,1871494:Var2,[]) } Add(Memory,15111181,203,63) { } Add(GetDataEx,3241032,63,42) { link(Data,4677777:Data1,[]) } Add(StrCat,5801920,147,70) { Str1="0" link(onStrCat,1246183:doWork3,[(193,76)]) link(Str2,1871494:Var3,[(160,47)]) } Add(HubEx,1246183,189,63) { link(onEvent,15111181:doValue,[]) } Add(GetDataEx,1871494,105,42) { Angle=3 link(Data,3241032:Var3,[]) } END_SDK Add(FormatStr,5259585,238,140) { Mask="%1:%2" Point(FString) link(Str1,3812563:Var1,[]) link(Str2,14526763:Var1,[(251,118)(286,118)]) } Add(Hub,14749708,35,105) { OutCount=7 link(onEvent1,1206938:doWork1,[(104,111)(104,83)]) link(onEvent2,15786058:doWork1,[(148,118)(148,83)]) link(onEvent3,4874658:doWork1,[(190,125)(190,83)]) link(onEvent4,3812563:doWork1,[(233,132)(233,83)]) link(onEvent5,14526763:doWork1,[(273,139)(273,83)]) link(onEvent6,5259585:doString,[]) link(onEvent7,9057180:doWork1,[(316,153)(316,83)]) } Add(MultiElement,4874658,196,77) { link(Data1,5703231:Day_week,[(202,42)(97,42)]) } BEGIN_SDK Add(EditMulti,1011721,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=139 Height=142 VOffset=70 HOffset=70 link(doWork1,5132265:doGetString,[]) link(Var1,5132265:String,[]) } Add(StrList,5132265,70,49) { Strings=#0:|11:понедельник|7:вторник|5:среда|7:четверг|7:пятница|7:суббота|11:воскресенье| Point(IdxToSelect) Point(String) Point(doGetString) link(IdxToSelect,1011721:Data1,[(90,35)(97,35)]) } END_SDK Add(MultiElement,1206938,112,77) { link(Data1,5703231:Month,[(118,54)(83,54)]) } BEGIN_SDK Add(EditMulti,10223582,21,21) { WorkCount=1 DataCount=1 VarCount=1 Width=139 Height=142 VOffset=70 HOffset=70 link(doWork1,79395:doGetString,[]) link(Var1,79395:String,[]) } Add(StrList,79395,70,49) { Strings=#0:|6:январь|7:февраль|4:март|6:апрель|3:май|4:июнь|4:июль|6:август|8:сентябрь|7:октябрь|6:ноябрь|7:декабрь| Point(IdxToSelect) Point(String) Point(doGetString) link(IdxToSelect,10223582:Data1,[(90,35)(97,35)]) } END_SDK END_SDK Add(Label,11993139,252,364) { Left=295 Top=15 Width=340 Font=[MS Sans Serif,8,1,32768,1] AutoSize=1 } Add(MultiElement,7155029,210,364) { link(onEvent1,11993139:doText,[]) link(Data1,510788:Calendar,[]) } BEGIN_SDK Add(EditMulti,4677777,21,21) { EventCount=1 WorkCount=1 DataCount=1 VarCount=1 Width=251 Height=130 VOffset=42 HOffset=42 link(doWork1,4720075:doCompare,[]) link(Var1,15111181:Value,[(69,123)(216,123)]) } Add(If_else,4720075,63,63) { Op2=String(G) link(onTrue,12145830:doData,[]) link(onFalse,89286:doData,[]) link(Op1,4677777:Data1,[]) } Add(DoData,12145830,112,63) { Data=String(В расчёте используется Григорианский календарь) link(onEventData,8290722:doWork2,[]) } Add(DoData,89286,154,70) { Data=String(В расчёте используется Юлианский календарь) link(onEventData,8290722:doWork3,[(200,76)]) } Add(Memory,15111181,210,63) { link(onData,4677777:onEvent1,[]) } Add(HubEx,8290722,196,63) { link(onEvent,15111181:doValue,[]) } END_SDK Add(Button,365020,252,119) { Left=150 Top=10 Width=50 Hint="Мировое время" Caption="UT" Data=Integer(0) link(onClick,12377201:doOn,[]) } Add(Button,9737920,252,84) { Left=225 Top=10 Width=50 Hint="Локальное время" Caption="GMT(+-)" Data=Integer(1) link(onClick,12377201:doOff,[(296,90)(296,118)]) } Add(MultiElementEx,14823904,217,224) { @Hint=#34:Коректировка часового пояса GMT +-| link(Year,510788:Year_m,[]) link(Month,510788:Month_m,[]) link(Day,510788:Day_m,[]) link(Day_week,510788:Day_week_m,[]) link(Hour,510788:Hour_m,[]) link(Minutes,510788:Minutes_m,[]) link(Time_zone,10046083:Var,[(265,214)(398,214)]) } BEGIN_SDK Add(EditMultiEx,9235420,21,21) { WorkCount=#9:doConvert| VarCount=#5:Year_|6:Month_|4:Day_|9:Day_week_|5:Hour_|8:Minutes_| DataCount=#4:Year|5:Month|3:Day|8:Day_week|4:Hour|7:Minutes|9:Time_zone| Width=384 Height=249 VOffset=56 HOffset=42 link(doConvert,6124972:doEvent1,[]) link(Year_,10170297:Year,[]) link(Month_,10170297:Month,[]) link(Day_,7886072:Var2,[]) link(Day_week_,5347882:Value,[(90,258)(363,258)]) link(Hour_,10170297:Hour,[(97,243)(90,243)]) link(Minutes_,10170297:Minute,[(104,236)(97,236)]) } Add(DateConvertor,12531525,63,77) { Mode=1 Point(DYear) Point(DMonth) Point(DDay) Point(DHour) Point(DMinute) Point(Result) link(onResult,11221461:doCalc,[]) link(DYear,9235420:Year,[]) link(DMonth,9235420:Month,[]) link(DDay,7605321:Var2,[]) link(DHour,9235420:Hour,[(90,61)(97,61)]) link(DMinute,9235420:Minutes,[(97,68)(104,68)]) } Add(DateConvertor,10170297,63,189) { Point(Year) Point(Month) Point(Day) Point(Hour) Point(Minute) } Add(Memory,5347882,357,147) { Default=Integer(0) } Add(If_else,9201980,63,147) { Op1=Real(0) Op2=Integer(0) link(onTrue,4479568:doData,[]) link(onFalse,3910253:doEvent1,[]) link(Op1,15241010:getVar,[]) link(Op2,2198868:getVar,[(76,140)(104,140)]) } Add(Hub,6124972,28,77) { link(onEvent1,12531525:doConvert,[]) link(onEvent2,9201980:doCompare,[(50,90)(50,153)]) } Add(DoData,4479568,308,147) { link(onEventData,4572921:doWork2,[]) link(Data,8698002:getVar,[(313,142)]) } Add(MathParse,11221461,154,77) { MathStr="%1 - 1/24 * (%2/60)" link(onResult,3118296:In,[]) link(X2,12024224:Var2,[(167,68)(111,68)]) } Add(LineBreakEx,7138877,126,42) { Caption="tz" Type=3 link(_Data,12024224:Var3,[(132,33)]) } Add(GetDataEx,12024224,105,28) { link(Data,9235420:Time_zone,[]) } Add(LineBreakEx,7315765,84,42) { Caption="dw" Type=3 link(_Data,9235420:Day_week,[]) } Add(LineBreakEx,16695628,49,245) { Caption="d_" Type=3 link(_Data,7886072:Var1,[(55,236)]) } Add(GetDataEx,7886072,77,231) { link(Data,10170297:Day,[]) } Add(LineBreakEx,16456705,196,168) { Caption="tz" Type=2 } Add(If_else,5155682,196,196) { Type=1 Op1=Real(0) Op2=Integer(0) link(onTrue,12576160:doNext,[(247,202)(247,167)]) link(onFalse,12576160:doPrev,[(254,209)(254,174)]) link(Op1,16456705:getVar,[]) } Add(LineBreakEx,12900149,49,42) { Caption="d" Type=3 link(_Data,7605321:Var1,[(55,33)]) } Add(GetDataEx,7605321,77,28) { link(Data,9235420:Day,[]) } Add(LineBreakEx,15241010,63,119) { Caption="d" Type=2 } Add(LineBreakEx,2198868,98,119) { Caption="d_" Type=2 } Add(LineBreakEx,8698002,308,119) { Caption="dw" Type=2 } Add(LineBreakEx,6001410,154,119) { Caption="dw" Type=2 } Add(Counter,12576160,266,161) { Min=1 Max=7 Point(doValue) link(onNext,4572921:doWork3,[(347,167)]) } Add(Hub,3910253,112,154) { link(onEvent1,15631393:doData,[]) link(onEvent2,5155682:doCompare,[(136,167)(136,202)]) } Add(DoData,15631393,154,154) { link(onEventData,12576160:doValue,[(241,160)(241,188)]) link(Data,6001410:getVar,[]) } Add(HubEx,4572921,343,147) { link(onEvent,5347882:doValue,[]) } Add(LineBreak,4079843,21,189) { Caption="r" link(Out,10170297:doConvert,[]) Primary=[3118296,182,-112] } END_SDK Add(LineBreak,4245487,35,224) { Caption="Correction" link(Out,13726589:doEvent1,[]) Primary=[1095630,259,-56] } Add(LineBreak,3637663,287,329) { Caption="Clear" link(Out,13718796:doClear,[]) Primary=[95878,-77,-182] } Add(Registry,14454241,434,56) { HKey=2 Key="SYSTEM\CurrentControlSet\Control\TimeZoneInformation" Value="Bias" DataType=0 } Add(LED,12377201,308,105) { Left=205 Top=15 Width=12 Height=12 Shape=1 ColorOn=47360 ColorOff=20224 Value=0 link(onChange,3317023:doChangeValue,[]) } Add(LED,3317023,350,105) { Left=280 Top=15 Width=12 Height=12 Shape=1 ColorOn=47360 ColorOff=20224 link(onChange,10046083:doIndex,[]) } Add(Hub,9458856,112,98) { link(onEvent1,8605956:doText,[]) link(onEvent2,10683687:doEvent1,[(136,111)(136,153)]) } Add(GetIndexData,10046083,392,105) { link(onIndex,65493:In,[]) link(Data1,11659625:Value,[]) link(Data2,14454241:RData,[(405,97)(440,97)]) } Add(Memory,11659625,392,56) { Default=Integer(0) } Add(InfoTip,9263000,133,14) { Info=#64:Расчёт солнечных и лунных затмений. Автор MAV |0:| Font=[MS Sans Serif,8,1,32768,1] Width=239 } Add(InfoTip,7112602,294,238) { Info=#145:Примечание: Диапозон ввода параметра Year(IC) - 4700г. до НЭ, 4700г. НЭ. В данном примере 1- 4700г. НЭ| HAlign=0 Width=183 Height=53 } Add(LineBreak,13591123,84,140) { Caption="re_c" link(Out,10683687:doEvent2,[(130,146)(130,160)]) Primary=[65493,350,-35] } Add(If_else,2142009,175,322) { @Hint=#28:фильтрация по заданному году| link(onTrue,8830872:doString,[]) link(Op1,1761611:Var1,[(181,138)]) link(Op2,3804113:Var1,[(188,313)]) AddHint(-144,-39,174,13,@Hint) } Add(GetDataEx,1761611,210,133) { link(Data,8605956:Text,[]) } Add(GetDataEx,3804113,217,308) { link(Data,14757883:Year_,[]) } Add(LineBreak,10782206,168,364) { Caption="Cal" link(Out,7155029:doWork1,[]) Primary=[15275818,0,-203] }