PDA

View Full Version : برنامه تبدیل تاریخ مشکل دارد



meysam39
یک شنبه 04 دی 1384, 13:08 عصر
سلام دوستان من این کد رو برای تبدیل تاریخ دارم اما اجرا نمی شود
از فانکشن یعنی خط اول error می گیرد
اگه ممکنه بگید که چه کار باید بکنم
----------------------------------------------------------



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;

m-khorsandi
یک شنبه 04 دی 1384, 14:00 عصر
کدهاتون رو داخل Tag بنویسید.

saeed_d
یک شنبه 04 دی 1384, 16:45 عصر
سلام
میشه ارور رو هم بنویسید

meysam39
یک شنبه 04 دی 1384, 20:18 عصر
میشه بیشتر توضیح بدید
یعنی چطور توی تگ بنویسم
چون من پاسکال بلد نیستم
بیشتر وی بی کار کردم
خیلی ممنون

szabeh
دوشنبه 05 دی 1384, 01:30 صبح
میثم عزیز از تگ استفاده کردن هیچ ربطی به وی بی یا پاسکال یا چیز دیگری ندارد.
برای استفاده از تگ در هنگام ارسال پست (برو به حالت پیشرفته) را انتخاب کن در آنجا خواهی یافت

oghab
دوشنبه 05 دی 1384, 17:59 عصر
سلام
تا اونجایی که من فهمیدم منظور دوستان از tag همون تگ code برای چپ به راست نشون دادن کدهاست!
من کد شما را ماتحان کردم، هیچ errorی نداد و درست هم جواب داد. حالا اگه مشکلتون حل نشده، بگید چه errorی میده!
تابع را در جای درست قرار دادید؟

meysam39
دوشنبه 05 دی 1384, 21:43 عصر
من اون رو توی توربو پاسکال اجرا می کنم
از tdatetime
اررور میگیره
یعنی همون خط اول
شاید باید توی ورژن دیگه ای از توربو پاسکال اجرا کنم
من اون رو توی Borland Turbo Pascal 7.0 for Dos
اجرا میکنم
فقط کل این کد رو داخل اون past میکنم اما از خط اول error میگیره

زیر tdatetime وای میسه و مینویسه
ERROR 3: Unknown indentifire
آیا لازمه این رو همین طوری past کنم یا باید چیزی بهش اضافه کنم و یا یجا فراخوانی کنم و ...

meysam39
سه شنبه 06 دی 1384, 20:03 عصر
لطفا یکی بگه من چکار کنم تا درست بشه؟
چطور این تابع رو باید اجرا کنم؟

زیر tdatetime وای میسه و مینویسه
ERROR 3: Unknown indentifire
آیا لازمه این رو همین طوری past کنم یا باید چیزی بهش اضافه کنم و یا یجا فراخوانی کنم و ...

oghab
سه شنبه 06 دی 1384, 20:18 عصر
متاسفانه من پاسکال یادم رفته! ولی تو دلفی استفاده اش کردم errorی نداد
احتمالا پاسکال نوع تاریخ را بصورت tdatetimeنمیشناسه و نوع متغیر زمانی را یه چیز دیگه است!
ولی فکر نکنم لازم باشه چیزی بهش اضافه کنی!
ولی مسلما یه جا باید فراخوانیش کنی! می خواهی از تابع چه استفاده ای بکنی؟

امیدوارم موفق باشی.

m-khorsandi
چهارشنبه 07 دی 1384, 07:40 صبح
مشخصه که این تابع برای دلفی نوشته شده،
نمیتونید اون رو به همین شکل تو پاسکال استفاده کنید.

سید مسعود موحد
چهارشنبه 07 دی 1384, 09:44 صبح
آخه دوست عزیز
کلاسهای استفاده شده در دلفی که در پاسکال موجود نمیباشد
در ثانی شما در پاسکال متغیری برای تاریخ ندارید در انجا از کاراکتر استفاده میشد

meysam39
چهارشنبه 07 دی 1384, 12:43 عصر
کسی برنامه تبدیل تاریخ میلادی به شمسی برای پاسکال رو داره
ممنون میشم اگه اون رو به من بدید

m-khorsandi
چهارشنبه 07 دی 1384, 13:27 عصر
فقط هدر تابع و خط اول داخل تغییر کرده.



function shamsi(tt:String):string;
var
str,y,m,d:string;
yi,mi,di:integer;
begin
str:=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;