نمایش نتایج 1 تا 13 از 13

نام تاپیک: برنامه تبدیل تاریخ مشکل دارد

  1. #1

    برنامه تبدیل تاریخ مشکل دارد

    سلام دوستان من این کد رو برای تبدیل تاریخ دارم اما اجرا نمی شود
    از فانکشن یعنی خط اول 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;

  2. #2
    کدهاتون رو داخل Tag بنویسید.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران-سیرجان
    پست
    273
    سلام
    میشه ارور رو هم بنویسید

  4. #4
    میشه بیشتر توضیح بدید
    یعنی چطور توی تگ بنویسم
    چون من پاسکال بلد نیستم
    بیشتر وی بی کار کردم
    خیلی ممنون

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1384
    محل زندگی
    Iran e sarfaraz
    پست
    150
    میثم عزیز از تگ استفاده کردن هیچ ربطی به وی بی یا پاسکال یا چیز دیگری ندارد.
    برای استفاده از تگ در هنگام ارسال پست (برو به حالت پیشرفته) را انتخاب کن در آنجا خواهی یافت

  6. #6
    سلام
    تا اونجایی که من فهمیدم منظور دوستان از tag همون تگ code برای چپ به راست نشون دادن کدهاست!
    من کد شما را ماتحان کردم، هیچ errorی نداد و درست هم جواب داد. حالا اگه مشکلتون حل نشده، بگید چه errorی میده!
    تابع را در جای درست قرار دادید؟

  7. #7
    من اون رو توی توربو پاسکال اجرا می کنم
    از tdatetime
    اررور میگیره
    یعنی همون خط اول
    شاید باید توی ورژن دیگه ای از توربو پاسکال اجرا کنم
    من اون رو توی Borland Turbo Pascal 7.0 for Dos
    اجرا میکنم
    فقط کل این کد رو داخل اون past میکنم اما از خط اول error میگیره

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

  8. #8
    لطفا یکی بگه من چکار کنم تا درست بشه؟
    چطور این تابع رو باید اجرا کنم؟

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

  9. #9
    متاسفانه من پاسکال یادم رفته! ولی تو دلفی استفاده اش کردم errorی نداد
    احتمالا پاسکال نوع تاریخ را بصورت tdatetimeنمیشناسه و نوع متغیر زمانی را یه چیز دیگه است!
    ولی فکر نکنم لازم باشه چیزی بهش اضافه کنی!
    ولی مسلما یه جا باید فراخوانیش کنی! می خواهی از تابع چه استفاده ای بکنی؟

    امیدوارم موفق باشی.
    آخرین ویرایش به وسیله oghab : سه شنبه 06 دی 1384 در 20:24 عصر

  10. #10
    مشخصه که این تابع برای دلفی نوشته شده،
    نمیتونید اون رو به همین شکل تو پاسکال استفاده کنید.

  11. #11
    آخه دوست عزیز
    کلاسهای استفاده شده در دلفی که در پاسکال موجود نمیباشد
    در ثانی شما در پاسکال متغیری برای تاریخ ندارید در انجا از کاراکتر استفاده میشد

  12. #12
    کسی برنامه تبدیل تاریخ میلادی به شمسی برای پاسکال رو داره
    ممنون میشم اگه اون رو به من بدید

  13. #13
    فقط هدر تابع و خط اول داخل تغییر کرده.


    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;

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •