لطفا برای 3 ماه آخر سال چک شود
Printable View
لطفا برای 3 ماه آخر سال چک شود
جستجو کردید؟؟؟؟
تابع ذیل را اجرا کنید حتما جواب می گیرید.
var
G_M,G_D,G_Y,g_cur_date,date1,da_myear,da_mmonth,da _mday:String;
a,da_cont,da_acc,y,m,d,da_sh1,da_sh2,da_sh3,da_sh4 ,da_sh5,da_sh6,da_me1,da_me3,da_me5,da_me7:integer ;
da_me8,da_me10,da_me12,da_sh7,da_sh8,da_sh9,da_sh1 0,da_sh11,da_me6,da_me9,da_me11,da_me4:integer;
da_sh12,da_me2,da_syear,da_smonth,da_sday:integer;
begin
da_cont:=1; da_acc:=0; da_sh1:=31; da_sh2:=31; da_sh3:=31; da_sh4:=31; da_sh5:=31; da_sh6:=31;
da_me1:=31; da_me3:=31; da_me5:=31; da_me7:=31; da_me8:=31; da_me10:=31;da_me12:=31; da_sh7:=30;
da_sh8:=30; da_sh9:=30; da_sh10:=30; da_sh11:=30;da_me4:=30; da_me6:=30; da_me9:=30; da_me11:=30;
da_sh12:=29; da_me2:=28; da_syear:=0; da_smonth:=0;
da_sday:=0; da_myear:='0'; da_mmonth:='0'; da_mday:='0';
date1:=DateToStr(date);
da_mday:=date1[9]+date1[10];
da_mmonth:=date1[6]+date1[7];
da_myear:=date1[1]+date1[2]+date1[3]+date1[4];
If ((da_mmonth = '03') And (da_mday < '21')) Or (da_mmonth < '03') Then
try
da_syear := StrToInt(da_myear) - 622;
Except
on EConvertError do
begin
FormMain.MaskEditDate.ReadOnly:=False;
Exit;
end;
end
Else
da_syear := StrToInt(da_myear) - 621;
If (StrToInt(da_myear) Mod 4) <> 0 Then
begin
da_sh12 := 30;
da_me2 := 29;
End;
If da_mmonth = '02' Then
da_acc := da_acc + da_me1
Else If da_mmonth = '03' Then
da_acc := da_acc + da_me1 + da_me2
Else If da_mmonth = '04' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3
Else If da_mmonth = '05' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4
Else If da_mmonth = '06' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 +da_me5
Else If da_mmonth = '07' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6
Else If da_mmonth = '08' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7
Else If da_mmonth = '09' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8
Else If da_mmonth = '10' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9
Else If da_mmonth = '11' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9 + da_me10
Else If da_mmonth = '12' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9 + da_me10 + da_me11;
da_acc := da_acc + StrToInt(da_mday);
If ((da_mmonth = '03') And (da_mday < '21')) Or (da_mmonth < '03') Then
da_acc := da_acc + 286
Else
da_acc := da_acc - (da_sh11 + da_sh12 + 20);
da_cont := 1;
If da_acc <= da_sh1 Then
begin
da_smonth := 1;
da_sday := da_acc;
end
Else If (da_acc - da_sh1) <= da_sh2 Then
begin
da_acc := da_acc - da_sh1;
da_smonth := 2;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2) <= da_sh3 Then
begin
da_acc := da_acc - da_sh1 - da_sh2;
da_smonth := 3;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3) <= da_sh4 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3;
da_smonth := 4;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4) <= da_sh5 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4;
da_smonth := 5;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5) <=da_sh6 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5;
da_smonth := 6;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6) <= da_sh7 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6;
da_smonth := 7;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7) <= da_sh8 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7;
da_smonth := 8;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8) <= da_sh9 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8;
da_smonth := 9;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9) <= da_sh10 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9;
da_smonth := 10;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10) <= da_sh11 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10;
da_smonth := 11;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10 - da_sh11) <= da_sh12 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10 - da_sh11;
da_smonth := 12;
da_sday := da_acc;
end;
If (da_mmonth = '03') And (da_mday = '20') Then
begin
a := da_syear + 2;
If (da_cont Mod 4) = 0 Then
da_sday := 30
Else
da_sday := 29;
end;
y := da_syear - 1300;
m := da_smonth;
d := da_sday;
if (da_smonth<10) and (da_sday<10) then
MaskEditDate.Text:=IntToStr(y)+'0'+IntToStr(m)+'0' +IntToStr(d)
else
if (da_smonth<10) then
MaskEditDate.Text:=IntToStr(y)+'0'+IntToStr(m)+Int ToStr(d)
else
if (da_sday<10) then
MaskEditDate.Text:=IntToStr(y)+IntToStr(m)+'0'+Int ToStr(d)
else
MaskEditDate.Text:=IntToStr(y)+IntToStr(m)+IntToSt r(d);
End;
یه کامپوننت واست گذاشتم اینجا هم میذارم
سلام ...
با اجازه مجید جان .... کداتون اینجوری خونده نمیشه .... اینطوری بنویسش ...
var
G_M,G_D,G_Y,g_cur_date,date1,da_myear,da_mmonth,da _mday:String;
a,da_cont,da_acc,y,m,d,da_sh1,da_sh2,da_sh3,da_sh4 ,da_sh5,da_sh6,da_me1,da_me3,da_me5,da_me7:integer ;
da_me8,da_me10,da_me12,da_sh7,da_sh8,da_sh9,da_sh1 0,da_sh11,da_me6,da_me9,da_me11,da_me4:integer;
da_sh12,da_me2,da_syear,da_smonth,da_sday:integer;
begin
da_cont:=1; da_acc:=0; da_sh1:=31; da_sh2:=31; da_sh3:=31; da_sh4:=31; da_sh5:=31; da_sh6:=31;
da_me1:=31; da_me3:=31; da_me5:=31; da_me7:=31; da_me8:=31; da_me10:=31;da_me12:=31; da_sh7:=30;
da_sh8:=30; da_sh9:=30; da_sh10:=30; da_sh11:=30;da_me4:=30; da_me6:=30; da_me9:=30; da_me11:=30;
da_sh12:=29; da_me2:=28; da_syear:=0; da_smonth:=0;
da_sday:=0; da_myear:='0'; da_mmonth:='0'; da_mday:='0';
date1:=DateToStr(date);
da_mday:=date1[9]+date1[10];
da_mmonth:=date1[6]+date1[7];
da_myear:=date1[1]+date1[2]+date1[3]+date1[4];
If ((da_mmonth = '03') And (da_mday < '21')) Or (da_mmonth < '03') Then
try
da_syear := StrToInt(da_myear) - 622;
Except
on EConvertError do
begin
FormMain.MaskEditDate.ReadOnly:=False;
Exit;
end;
end
Else
da_syear := StrToInt(da_myear) - 621;
If (StrToInt(da_myear) Mod 4) <> 0 Then
begin
da_sh12 := 30;
da_me2 := 29;
End;
If da_mmonth = '02' Then
da_acc := da_acc + da_me1
Else If da_mmonth = '03' Then
da_acc := da_acc + da_me1 + da_me2
Else If da_mmonth = '04' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3
Else If da_mmonth = '05' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4
Else If da_mmonth = '06' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 +da_me5
Else If da_mmonth = '07' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6
Else If da_mmonth = '08' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7
Else If da_mmonth = '09' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8
Else If da_mmonth = '10' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9
Else If da_mmonth = '11' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9 + da_me10
Else If da_mmonth = '12' Then
da_acc := da_acc + da_me1 + da_me2 + da_me3 + da_me4 + da_me5 + da_me6 + da_me7 + da_me8 + da_me9 + da_me10 + da_me11;
da_acc := da_acc + StrToInt(da_mday);
If ((da_mmonth = '03') And (da_mday < '21')) Or (da_mmonth < '03') Then
da_acc := da_acc + 286
Else
da_acc := da_acc - (da_sh11 + da_sh12 + 20);
da_cont := 1;
If da_acc <= da_sh1 Then
begin
da_smonth := 1;
da_sday := da_acc;
end
Else If (da_acc - da_sh1) <= da_sh2 Then
begin
da_acc := da_acc - da_sh1;
da_smonth := 2;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2) <= da_sh3 Then
begin
da_acc := da_acc - da_sh1 - da_sh2;
da_smonth := 3;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3) <= da_sh4 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3;
da_smonth := 4;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4) <= da_sh5 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4;
da_smonth := 5;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5) <=da_sh6 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5;
da_smonth := 6;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6) <= da_sh7 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6;
da_smonth := 7;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7) <= da_sh8 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7;
da_smonth := 8;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8) <= da_sh9 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8;
da_smonth := 9;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9) <= da_sh10 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9;
da_smonth := 10;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10) <= da_sh11 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10;
da_smonth := 11;
da_sday := da_acc;
end
Else If (da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10 - da_sh11) <= da_sh12 Then
begin
da_acc := da_acc - da_sh1 - da_sh2 - da_sh3 - da_sh4 - da_sh5 - da_sh6 - da_sh7 - da_sh8 - da_sh9 - da_sh10 - da_sh11;
da_smonth := 12;
da_sday := da_acc;
end;
If (da_mmonth = '03') And (da_mday = '20') Then
begin
a := da_syear + 2;
If (da_cont Mod 4) = 0 Then
da_sday := 30
Else
da_sday := 29;
end;
y := da_syear - 1300;
m := da_smonth;
d := da_sday;
if (da_smonth<10) and (da_sday<10) then
MaskEditDate.Text:=IntToStr(y)+'0'+IntToStr(m)+'0' +IntToStr(d)
else
if (da_smonth<10) then
MaskEditDate.Text:=IntToStr(y)+'0'+IntToStr(m)+Int ToStr(d)
else
if (da_sday<10) then
MaskEditDate.Text:=IntToStr(y)+IntToStr(m)+'0'+Int ToStr(d)
else
MaskEditDate.Text:=IntToStr(y)+IntToStr(m)+IntToSt r(d);
End;