بنام خدا
دوست عزیز سلام
با عرض معذرت از سوء تفاهم پیش آمده
این کد را با همین شکل من از همین سایت دانلود کردم
ولی در استفاده با مشکل مواجه شدم
حالا اون را برای شما کمی مرتب کردم
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;