PDA

View Full Version : سوال: علت این خطا در تاریخ شمسی چیست؟



drahmadtaraffoo
جمعه 07 بهمن 1390, 11:36 صبح
بسم الله الرحمن الرحیم
با سلام خدمت دوستان عزیز
علت این خطا در تاریخ شمسی چیست؟
تاریخ زمانی که به ماه 11 می رسیم ماه را ماه 11 نشان می دهد ولی روزها از 31 روز بیشتر می شوند تا اینکه از روز 12 ماه مشکل برطرف می شود.
سورس آن را گذاشته ام.
متشکرم
:قلب:

pezhvakco
جمعه 07 بهمن 1390, 18:35 عصر
شما حتما در مورد روش نوشتن کد ها و اینکه چه طور بنویسیم تا خوانا تر باشه یه بررسی داشته باش .
خوندن و فهمیدن این کدنویسی شما برای خود نویسندش مشکل است چه برسه به یک نفر دیگه .

این شرط رو بر چه اساس بدست آوردی :

case mi of
1: if di<21 then
begin
mi:=10; di:=di+10;
end
else
begin
mi:=11; di:=di+10;
end;
end;

drahmadtaraffoo
جمعه 07 بهمن 1390, 18:58 عصر
بنام خدا
دوست عزیز سلام
با عرض معذرت از سوء تفاهم پیش آمده
این کد را با همین شکل من از همین سایت دانلود کردم
ولی در استفاده با مشکل مواجه شدم
حالا اون را برای شما کمی مرتب کردم
:قلب::قلب::قلب:


Function shamsi(tt:tdatetime):string;
Var
str,y,m,d:string; yi,mi,di:integer;
begin
str:=datetostr(tt);
y:=copy(str,1,4);
m:=copy(str,6,2);
d:=copy(str,9,2);
yi:=strtoint(y);
mi:=strtoint(m);
di:=strtoint(d);
if (yi mod 4=0) then if mi>2 then begin
tt:=tt+1;
str:=datetostr(tt);
y:=copy(str,1,4);
m:=copy(str,6,2);
d:=copy(str,9,2);
yi:=strtoint(y);
mi:=strtoint(m);
di:=strtoint(d);
end;
if ((mi<3) or ((mi=3) and (di<21))) then
begin yi:=yi-622; end else begin yi:=yi-621;
end;
case mi of
1: if di<21 then begin mi:=10; di:=di+10; end else begin mi:=11; di:=di+10;
end;
2: if di<20 then begin mi:=11; di:=di+11; end else begin mi:=12; di:=di-19;
end;
3: if di<21 then begin mi:=12; di:=di+9; end else begin mi:=1; di:=di-20;
end;
4: if di<21 then begin mi:=1; di:=di+11; end else begin mi:=2; di:=di-20;
end;
5: if di<22 then begin mi:=mi-3;di:=di+10; end else begin mi:=mi-2; di:=di-21;
end;
6: if di<22 then begin mi:=mi-3; di:=di+10;end else begin mi:=mi-2; di:=di-21;
end;
7: if di<23 then begin mi:=mi-3; di:=di+9; end else begin mi:=mi-2; di:=di-22;
end;
8: if di<23 then begin mi:=mi-3; di:=di+9; end else begin mi:=mi-2; di:=di-22;
end;
9: if di<23 then begin mi:=mi-3; di:=di+9; end else begin mi:=mi-2; di:=di-22;
end;
10:if di<23 then begin mi:=7; di:=di+8; end else begin mi:=8; di:=di-22;
end;
11:if di<22 then begin mi:=mi-3; di:=di+9; end else begin mi:=mi-2; di:=di-21;
end;
12:if di<22 then begin mi:=mi-3; di:=di+9; end else begin mi:=mi-2; di:=di-21;
end;
end;
y:=inttostr(yi); m:=inttostr(mi);
if (length(m)=1) then m:='0'+m; d:=inttostr(di);
if length(d)=1 then d:='0'+d; shamsi:=y+'/'+m+'/'+d
end;