29-10-2014, 02:37 PM
مراحل القمر
![[صورة: GTXD7h.png]](http://img540.imageshack.us/img540/2968/GTXD7h.png)
كود جافا حولته الى الدلفي
![[صورة: GTXD7h.png]](http://img540.imageshack.us/img540/2968/GTXD7h.png)
كود جافا حولته الى الدلفي
PHP كود :
private void moonPhase(int y, int m, int d)
{
/*
calculates the moon phase (0-7), accurate to 1 segment.
0 = > new moon.
4 => full moon.
*/
double c,e;
double jd;
int b;
if (m < 3) {
y--;
m += 12;
}
++m;
c = 365.25*y;
e = 30.6*m;
jd = c+e+d-694039.09; /* jd is total days elapsed */
jd /= 29.53; /* divide by the moon cycle (29.53 days) */
b = (int) jd; /* int(jd) -> b, take integer part of jd */
jd -= b; /* subtract integer part to leave fractional part of original jd */
b = (int) (jd*8 + 0.5); /* scale fraction from 0-8 and round by adding 0.5 */
b = b & 7; /* 0 and 8 are the same so turn 8 into 0 */
this.phase =b;
}
PHP كود :
function moonPhase(y: Word; m,d: byte):Byte ;
var c,e,jd:Real;
b:Integer;
begin
if (m < 3) then begin
y:=y-1;
m:= m+12;
end;
m:=m+1 ;
c := 365.25*y;
e := 30.6*m;
jd := c+e+d-694039.09; //* jd is total days elapsed */
jd := jd/29.53; //* divide by the moon cycle (29.53 days) */
b := Trunc(jd); //* int(jd) -> b, take integer part of jd */
jd :=jd- b; //* subtract integer part to leave fractional part of original jd */
b := Trunc(jd*8 + 0.5); //* scale fraction from 0-8 and round by adding 0.5 */
b := b and 7; //* 0 and 8 are the same so turn 8 into 0 */
result :=b;
end;
PHP كود :
var Year,Month,Day:Word;
_Phase:0..8;
begin
DecodeDate(Date,Year, Month, Day);
_Phase:=MoonPhase(Year,Month,Day) ;
sStatusBar1.Panels[0].Text:='لعام : '+inttostr(hjritime2(Date).Year) +' هجري';
sLabel2.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,3,12)) ;
sLabel4.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,7,27)) ;
sLabel6.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,8,15)) ;
sLabel8.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,9,1)) ;
sLabel10.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,9,21)) ;
sLabel12.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,9,27)) ;
sLabel14.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,10,1)) ;
sLabel16.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,12,10)) ;
sLabel18.Caption:=DateToStr(Hejry2Melady(hjritime2(Date).Year,1,10)) ;
if _Phase in [1..8] then
sAlphaImageList1.GetIcon(_Phase, sImage1.picture.Icon)
else sAlphaImageList1.GetIcon(0, sImage1.picture.Icon) ;
sPanel1.Caption:= strMoonphase[_Phase] ;

