Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Giúp các bé đáng thương ấy với

Gameshow “Ai Là Triệu Phú” trên VTV đang chờ đón bạn – Tải ngay!

Bán đấu giá ủng hộ từ thiện

Ngập tràn ưu đãi cho tín đồ công nghệ tại sony show 2014

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tin tức công nghệ mới
kết quả từ 1 tới 11 trên 11
  1. #1
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.116
    Cảm ơn
    693
    Điểm
    1.254/559 bài viết

    Default Chuyển đổi ngày tháng Âm Dương lịch.

    Đây là bài viết từ my blog:


    Trong bài viết này, tôi có sử dụng một vài lệnh của C++ mà Free Pascal cho phép.
    VD: x+=123; tương đương với x:=x+123;
    ngoài ra còn có -=,*=,...
    các bạn nên kích hoạt chức năng sử dụng chức năng này trong Free Pascal ở:
    Option\Compiler\tab Syntax\[x] C-like operator.
    Cái này sẽ giúp tốc độ nhanh hơn.
    Nếu các bạn dùng Turbo Pascal thì sửa cho mình mấy chỗ đó sao cho TP có thể dịch được.
    Ngoài ra, nếu bạn dùn TP mà gặp mấy dòng exit(x); các bạn hãy chuyển thành begin TênFunction :=x; exit; end; hàm exit này có tác dụng trả kết quả cho hàm.

    Xin cảm ơn đã giúp tôi hoàn thành bài viết này.

    Code Carules.pp
    PHP Code:
    const Can:array[0..9]of string=
    (
    'Giap','At','Binh','Dinh','Mau','Ki','Canh','Tan','Nham','Quy');
    Chi:array[0..11]of string=('Ty','Suu','Dan','Mao'
    ,'Thin','Tj','Ngo','Mui','Than','Dau','Tuat','Hoi');


    type
    Solar
    =array[1..3of LongInt;
    Lunar=array[1..4]of LongInt;

    var 
    ans1:Solarans2:Lunar;

    function 
    jdFromDate(ddmmyy:LongInt):LongInt;

    var 
    aymjdLongInt;
    BEGIN
    := Trunc((14 mm) / 12);
    := yy+4800-a;
    := mm+12*a-3;
    jd := dd Trunc((153*m+2)/5) + 365*y
    Trunc(y/4) - Trunc(y/100) + Trunc(y/400) - 32045;
    if (
    jd 2299161then begin
      jd 
    := dd Trunc((153*m+2)/5) + 365*Trunc(y/4) - 32083;
    end;
    exit(
    jd);
    END;

    function 
    jdToDate(jd:Real):Solar;

    var 
    abcdem:Real;
     
    daymonthyear:LongInt;
    ans:Solar;
    BEGIN
    if (jd 2299160then begin
     
    // After 5/10/1582, Gregorian calendar
        
    := jd 32044;
      
    := Trunc((4*a+3)/146097);
      
    := Trunc((b*146097)/4);
    end else begin
        b 
    := 0;
        
    := jd 32082;
    end;
    := Trunc((4*c+3)/1461);
    := Trunc((1461*d)/4);
    := Trunc((5*e+2)/153);
    day := round(Trunc((153*m+2)/5) + 1);
    month := round(12*Trunc(m/10));
    year := round(b*100 4800 Trunc(m/10));
    ans[1]:=dayans[2]:=monthans[3]:=year;
    exit(
    ans);
    END;

    function 
    getNewMoonDay(ktimeZone:LongInt):LongInt;

    var 
    TT2T3drJd1MMprFC1deltatJdNew:Real;
    BEGIN
    := k/1236.85// Time in Julian centuries from 1900 January 0.5
    T2 := T;
    T3 := T2 T;
    dr := PI/180;
    Jd1 := 2415020.75933 29.53058868*0.0001178*T2 0.000000155*T3;
    Jd1 := Jd1 0.00033*sin((166.56 132.87*0.009173*T2)*dr); // Mean new moon
    := 359.2242 29.10535608*0.0000333*T2 0.00000347*T3// Sun's mean anomaly
    Mpr := 306.0253 385.81691806*0.0107306*T2 0.00001236*T3// Moon's mean anomaly
    := 21.2964 390.67050646*0.0016528*T2 0.00000239*T3// Moon's argument of latitude
    C1:=(0.1734 0.000393*T)*sin(M*dr) + 0.0021*sin(2*dr*M);
    C1 := C1 0.4068*sin(Mpr*dr) + 0.0161*sin(dr*2*Mpr);
    C1 := C1 0.0004*sin(dr*3*Mpr);
    C1 := C1 0.0104*sin(dr*2*F) - 0.0051*sin(dr*(M+Mpr));
    C1 := C1 0.0074*sin(dr*(M-Mpr)) + 0.0004*sin(dr*(2*F+M));
    C1 := C1 0.0004*sin(dr*(2*F-M)) - 0.0006*sin(dr*(2*F+Mpr));
    C1 := C1 0.0010*sin(dr*(2*F-Mpr)) + 0.0005*sin(dr*(2*Mpr+M));
    if (
    < -11then
    begin
        deltat
    := 0.001 0.000839*0.0002261*T2
      
    0.00000845*T3 0.000000081*T*T3;
    end else begin
        deltat
    := -0.000278 0.000265*0.000262*T2;
    end;
    JdNew := Jd1 C1 deltat;
    exit(
    Trunc(JdNew 0.5 timeZone/24));
    END;

    function 
    getSunLongitude(jdntimeZone:LongInt):LongInt;

    var 
    TT2drML0DLL:Real;
    BEGIN
    := (jdn 2451545.5 timeZone/24) / 36525// Time in Julian centuries from 2000-01-01 12:00:00 GMT
    T2 := T*T;
    dr := PI/180// degree to radian
    := 357.52910 35999.05030*0.0001559*T2 0.00000048*T*T2// mean anomaly, degree
    L0 := 280.46645 36000.76983*0.0003032*T2// mean longitude, degree
    DL := (1.914600 0.004817*0.000014*T2)*sin(dr*M);
    DL := DL + (0.019993 0.000101*T)*sin(dr*2*M) + 0.000290*sin(dr*3*M);
    := L0 DL// true longitude, degree
    := L*dr;
    := PI*2*(Trunc(L/(PI*2))); // Normalize to (0, 2*PI)
    exit(Trunc(PI 6));
    END;

    function 
    getLunarMonth11(yytimeZone:LongInt):LongInt;

    var 
    koffnmsunLong:LongInt;
    BEGIN
    off 
    := jdFromDate(3112yy) - 2415021;
    := Trunc(off 29.530588853);
    nm := getNewMoonDay(ktimeZone);
    sunLong := getSunLongitude(nmtimeZone); // sun longitude at local midnight
    if (sunLong >= 9then begin
        nm 
    := getNewMoonDay(k-1timeZone);
    end;
    exit(
    nm);
    END;

    function 
    getLeapMonthOffset(a11timeZone:LongInt):LongInt;

    var 
    klastarci:LongInt;
    BEGIN
    := Trunc((a11 2415021.076998695) / 29.530588853 0.5);
    last := 0;
    := 1// We start with the month following lunar month 11
    arc := getSunLongitude(getNewMoonDay(k+itimeZone), timeZone);
    repeat
        last 
    := arc;
        
    i+=1;
        
    arc := getSunLongitude(getNewMoonDay(k+itimeZone), timeZone);
    until (arc <> last) and ( 14);
    exit(
    i-1);
    END;

    function 
    convertSolar2Lunar(ddmmyytimeZone:LongInt):Lunar;

    var 
    kdayNumbermonthStart,
    a11b11diffleapMonthDiff:LongInt;
    lunarDaylunarMonthlunarYearlunarLeap:LongInt;
    ans:Lunar;
    BEGIN
    dayNumber 
    := jdFromDate(ddmmyy);
    := Trunc((dayNumber 2415021.076998695) / 29.530588853);
    monthStart := getNewMoonDay(k+1timeZone);
    if (
    monthStart dayNumberthen begin
      monthStart 
    := getNewMoonDay(ktimeZone);
    end;
    a11 := getLunarMonth11(yytimeZone);
    b11 := a11;
    if (
    a11 >= monthStartthen begin
      lunarYear 
    := yy;
      
    a11 := getLunarMonth11(yy-1timeZone);
    end else begin
      lunarYear 
    := yy+1;
      
    b11 := getLunarMonth11(yy+1timeZone);
    end;
    lunarDay := dayNumber-monthStart+1;
    diff := Trunc((monthStart a11)/29);
    lunarLeap := 0;
    lunarMonth := diff+11;
    if (
    b11 a11 365then begin
      leapMonthDiff 
    := getLeapMonthOffset(a11timeZone);
      if (
    diff >= leapMonthDiffthen begin
        lunarMonth 
    := diff 10;
        if (
    diff leapMonthDiffthen begin
          lunarLeap 
    := 1;
        
    end;
      
    end;
    end;
    if (
    lunarMonth 12then begin
      lunarMonth 
    := lunarMonth 12;
    end;
    if (
    lunarMonth >= 11) and ( diff 4then begin
      lunarYear 
    -= 1;
    end;
    ans[1]:=LunarDayans[2]:=LunarMonthans[3]:=LunarYear;
    ans[4]:=LunarLeap; exit(ans);
    END;

    function 
    convertLunar2Solar
    (lunarDaylunarMonthlunarYearlunarLeaptimeZone:LongInt):Solar;

    var 
    ka11b11offleapOffleapMonthmonthStart:LongInt;

    BEGIN
    if (lunarMonth 11then begin
      a11 
    := getLunarMonth11(lunarYear-1timeZone);
      
    b11 := getLunarMonth11(lunarYeartimeZone);
    end else begin
      a11 
    := getLunarMonth11(lunarYeartimeZone);
      
    b11 := getLunarMonth11(lunarYear+1timeZone);
    end;
    off := lunarMonth 11;
    if (
    off 0then begin
      off 
    += 12;
    end;
    if (
    b11 a11 365then begin
      leapOff 
    := getLeapMonthOffset(a11timeZone);
      
    leapMonth := leapOff 2;
      if (
    leapMonth 0then begin
        leapMonth 
    += 12;
      
    end;
      if (
    lunarLeap <> 0) and (lunarMonth <> leapMonththen begin
        
    exit;
      
    end else if (lunarLeap <> 0) or ( off >= leapOffthen begin
        off 
    += 1;
      
    end;
    end;
    := Trunc(0.5 + (a11 2415021.076998695) / 29.530588853);
    monthStart := getNewMoonDay(k+offtimeZone);
    exit(
    jdToDate(monthStart+lunarDay-1));
    END;

    BEGIN
    writeln
    ('Chuyen doi Duong-Am');
    writeln;

    writeln('Hom nay 4/1/2011, chuong trinh tinh ra ngay am lich bang:');
    ans2:=convertSolar2Lunar(4,1,2011,+7);
    writeln('Ngay: ',ans2[1],' = ',
    can[(jdFromDate(ans2[1],ans2[2],ans2[3])+9mod 10],
    chi[(jdFromDate(ans2[1],ans2[2],ans2[3])+1mod 12]);

    writeln('Thang: ',ans2[2],' = ',
    can[(ans2[3]*12+ans2[2]+3mod 10],
    chi[(ans2[2]+1)mod 12]);

    writeln('Nam: ',ans2[3],' = ',
    can[(ans2[3]+6mod 10],
    chi[(ans2[3]+8)mod 12]);

    writeln;
    writeln;

    writeln('Hom nay 1/12/2010 (AL), tinh ra ngay duong lich bang:');
    ans1:=convertLunar2Solar(1,12,2010,0,+7);
    writeln('Ngay: ',ans1[1]);
    writeln('Thang: ',ans1[2]);
    writeln('Nam: ',ans1[3]);
    readln;
    END


    ---------- Bài thêm lúc 17:13 ---------- Bài trước là lúc 16:33 ----------

    Viết thành Unit cho dễ dùng:
    SolarLunar.pas:
    PHP Code:
    Unit SolarLunar;

    INTERFACE
    const 
    Can:array[0..9]of string=
    (
    'Giap','At','Binh','Dinh','Mau','Ki','Canh','Tan','Nham','Quy');
    Chi:array[0..11]of string=('Ty','Suu','Dan','Mao'
    ,'Thin','Tj','Ngo','Mui','Than','Dau','Tuat','Hoi');
    type
    Solar
    =record Y,M,D:longintend;
    Lunar=record Y,M,D,L:Longintend;

    function 
    jdFromDate(ddmmyy:LongInt):LongInt;
    function 
    jdToDate(jd:Real):Solar;
    function 
    getNewMoonDay(ktimeZone:LongInt):LongInt;
    function 
    getSunLongitude(jdntimeZone:LongInt):LongInt;
    function 
    getLunarMonth11(yytimeZone:LongInt):LongInt;
    function 
    getLeapMonthOffset(a11timeZone:LongInt):LongInt;
    function 
    Solar2Lunar(ddmmyytimeZone:LongInt):Lunar;
    function 
    Lunar2Solar
    (lunarDaylunarMonthlunarYearlunarLeaptimeZone:LongInt):Solar;

    IMPLEMENTATION
    function jdFromDate(ddmmyy:LongInt):LongInt;

    var 
    aymjdLongInt;
    BEGIN
    := Trunc((14 mm) / 12);
    := yy+4800-a;
    := mm+12*a-3;
    jd := dd Trunc((153*m+2)/5) + 365*y
    Trunc(y/4) - Trunc(y/100) + Trunc(y/400) - 32045;
    if (
    jd 2299161then begin
      jd 
    := dd Trunc((153*m+2)/5) + 365*Trunc(y/4) - 32083;
    end;
    exit(
    jd);
    END;

    function 
    jdToDate(jd:Real):Solar;

    var 
    abcdem:Real;
     
    daymonthyear:LongInt;
    ans:Solar;
    BEGIN
    if (jd 2299160then begin
     
    // After 5/10/1582, Gregorian calendar
        
    := jd 32044;
      
    := Trunc((4*a+3)/146097);
      
    := Trunc((b*146097)/4);
    end else begin
        b 
    := 0;
        
    := jd 32082;
    end;
    := Trunc((4*c+3)/1461);
    := Trunc((1461*d)/4);
    := Trunc((5*e+2)/153);
    day := round(Trunc((153*m+2)/5) + 1);
    month := round(12*Trunc(m/10));
    year := round(b*100 4800 Trunc(m/10));
    ans.D:=dayans.M:=monthans.Y:=year;
    exit(
    ans);
    END;

    function 
    getNewMoonDay(ktimeZone:LongInt):LongInt;

    var 
    TT2T3drJd1MMprFC1deltatJdNew:Real;
    BEGIN
    := k/1236.85// Time in Julian centuries from 1900 January 0.5
    T2 := T;
    T3 := T2 T;
    dr := PI/180;
    Jd1 := 2415020.75933 29.53058868*0.0001178*T2 0.000000155*T3;
    Jd1 := Jd1 0.00033*sin((166.56 132.87*0.009173*T2)*dr); // Mean new moon
    := 359.2242 29.10535608*0.0000333*T2 0.00000347*T3// Sun's mean anomaly
    Mpr := 306.0253 385.81691806*0.0107306*T2 0.00001236*T3// Moon's mean anomaly
    := 21.2964 390.67050646*0.0016528*T2 0.00000239*T3// Moon's argument of latitude
    C1:=(0.1734 0.000393*T)*sin(M*dr) + 0.0021*sin(2*dr*M);
    C1 := C1 0.4068*sin(Mpr*dr) + 0.0161*sin(dr*2*Mpr);
    C1 := C1 0.0004*sin(dr*3*Mpr);
    C1 := C1 0.0104*sin(dr*2*F) - 0.0051*sin(dr*(M+Mpr));
    C1 := C1 0.0074*sin(dr*(M-Mpr)) + 0.0004*sin(dr*(2*F+M));
    C1 := C1 0.0004*sin(dr*(2*F-M)) - 0.0006*sin(dr*(2*F+Mpr));
    C1 := C1 0.0010*sin(dr*(2*F-Mpr)) + 0.0005*sin(dr*(2*Mpr+M));
    if (
    < -11then
    begin
        deltat
    := 0.001 0.000839*0.0002261*T2
      
    0.00000845*T3 0.000000081*T*T3;
    end else begin
        deltat
    := -0.000278 0.000265*0.000262*T2;
    end;
    JdNew := Jd1 C1 deltat;
    exit(
    Trunc(JdNew 0.5 timeZone/24));
    END;

    function 
    getSunLongitude(jdntimeZone:LongInt):LongInt;

    var 
    TT2drML0DLL:Real;
    BEGIN
    := (jdn 2451545.5 timeZone/24) / 36525// Time in Julian centuries from 2000-01-01 12:00:00 GMT
    T2 := T*T;
    dr := PI/180// degree to radian
    := 357.52910 35999.05030*0.0001559*T2 0.00000048*T*T2// mean anomaly, degree
    L0 := 280.46645 36000.76983*0.0003032*T2// mean longitude, degree
    DL := (1.914600 0.004817*0.000014*T2)*sin(dr*M);
    DL := DL + (0.019993 0.000101*T)*sin(dr*2*M) + 0.000290*sin(dr*3*M);
    := L0 DL// true longitude, degree
    := L*dr;
    := PI*2*(Trunc(L/(PI*2))); // Normalize to (0, 2*PI)
    exit(Trunc(PI 6));
    END;

    function 
    getLunarMonth11(yytimeZone:LongInt):LongInt;

    var 
    koffnmsunLong:LongInt;
    BEGIN
    off 
    := jdFromDate(3112yy) - 2415021;
    := Trunc(off 29.530588853);
    nm := getNewMoonDay(ktimeZone);
    sunLong := getSunLongitude(nmtimeZone); // sun longitude at local midnight
    if (sunLong >= 9then begin
        nm 
    := getNewMoonDay(k-1timeZone);
    end;
    exit(
    nm);
    END;

    function 
    getLeapMonthOffset(a11timeZone:LongInt):LongInt;

    var 
    klastarci:LongInt;
    BEGIN
    := Trunc((a11 2415021.076998695) / 29.530588853 0.5);
    last := 0;
    := 1// We start with the month following lunar month 11
    arc := getSunLongitude(getNewMoonDay(k+itimeZone), timeZone);
    repeat
        last 
    := arc;
        
    i+=1;
        
    arc := getSunLongitude(getNewMoonDay(k+itimeZone), timeZone);
    until (arc <> last) and ( 14);
    exit(
    i-1);
    END;

    function 
    Solar2Lunar(ddmmyytimeZone:LongInt):Lunar;

    var 
    kdayNumbermonthStart,
    a11b11diffleapMonthDiff:LongInt;
    lunarDaylunarMonthlunarYearlunarLeap:LongInt;
    ans:Lunar;
    BEGIN
    dayNumber 
    := jdFromDate(ddmmyy);
    := Trunc((dayNumber 2415021.076998695) / 29.530588853);
    monthStart := getNewMoonDay(k+1timeZone);
    if (
    monthStart dayNumberthen begin
      monthStart 
    := getNewMoonDay(ktimeZone);
    end;
    a11 := getLunarMonth11(yytimeZone);
    b11 := a11;
    if (
    a11 >= monthStartthen begin
      lunarYear 
    := yy;
      
    a11 := getLunarMonth11(yy-1timeZone);
    end else begin
      lunarYear 
    := yy+1;
      
    b11 := getLunarMonth11(yy+1timeZone);
    end;
    lunarDay := dayNumber-monthStart+1;
    diff := Trunc((monthStart a11)/29);
    lunarLeap := 0;
    lunarMonth := diff+11;
    if (
    b11 a11 365then begin
      leapMonthDiff 
    := getLeapMonthOffset(a11timeZone);
      if (
    diff >= leapMonthDiffthen begin
        lunarMonth 
    := diff 10;
        if (
    diff leapMonthDiffthen begin
          lunarLeap 
    := 1;
        
    end;
      
    end;
    end;
    if (
    lunarMonth 12then begin
      lunarMonth 
    := lunarMonth 12;
    end;
    if (
    lunarMonth >= 11) and ( diff 4then begin
      lunarYear 
    -= 1;
    end;
    ans.D:=LunarDayans.M:=LunarMonthans.Y:=LunarYear;
    ans.L:=LunarLeap; exit(ans);
    END;

    function 
    Lunar2Solar
    (lunarDaylunarMonthlunarYearlunarLeaptimeZone:LongInt):Solar;

    var 
    ka11b11offleapOffleapMonthmonthStart:LongInt;

    BEGIN
    if (lunarMonth 11then begin
      a11 
    := getLunarMonth11(lunarYear-1timeZone);
      
    b11 := getLunarMonth11(lunarYeartimeZone);
    end else begin
      a11 
    := getLunarMonth11(lunarYeartimeZone);
      
    b11 := getLunarMonth11(lunarYear+1timeZone);
    end;
    off := lunarMonth 11;
    if (
    off 0then begin
      off 
    += 12;
    end;
    if (
    b11 a11 365then begin
      leapOff 
    := getLeapMonthOffset(a11timeZone);
      
    leapMonth := leapOff 2;
      if (
    leapMonth 0then begin
        leapMonth 
    += 12;
      
    end;
      if (
    lunarLeap <> 0) and (lunarMonth <> leapMonththen begin
        
    exit;
      
    end else if (lunarLeap <> 0) or ( off >= leapOffthen begin
        off 
    += 1;
      
    end;
    end;
    := Trunc(0.5 + (a11 2415021.076998695) / 29.530588853);
    monthStart := getNewMoonDay(k+offtimeZone);
    exit(
    jdToDate(monthStart+lunarDay-1));
    END;

    END
    chương trình mẫu:
    PHP Code:
    uses SolarLunar,DateUtils,SysUtils;
    var 
    T:TDateTimeS:SolarL:Lunar;

    BEGIN
    T
    :=Today;
    S.Y:=YearOf(T);
    S.M:=MonthOf(T);
    S.D:=DayOf(T);
    L:=Solar2Lunar(S.D,S.M,S.Y,+7);
    writeln('Solar: ',S.D:5,S.M:5,S.Y:10);
    writeln('Lunar: ',L.D:5,L.M:5,L.Y:10);
    readln;
    END
    Thay đổi nội dung bởi kien_coi_1997; 14-02-2011 lúc 15:09.
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  2. Có 5 thành viên cảm ơn kien_coi_1997 cho bài viết này:
    HGMinh95 (20-03-2012), nghcuong (18-08-2012), pkthanh92 (01-02-2011), rac1 (23-07-2011), Tung_Huynh (01-02-2011)

  3. #2
    pkthanh92's Avatar
    pkthanh92 vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Nov 2009
    Đến từ
    Hà nội
    Bài
    267
    Cảm ơn
    117
    Điểm
    196/109 bài viết

    Default

    Ngày xưa mẹ cũng hỏi câu này, mình bí quá đành nói bừa bảo mẹ dở lịch ra xem hôm nay âm là bao nhiêu rồi xem ngày mẹ cần đổi cách hôm nay bao nhiêu ngày rồi trừ cho lịch duơng đúng 1 khoảng như vậy là ra, không ngờ thuật toán tổng quát nó lại phức tạp như vậy, há há ngày đó nếu mẹ đổi sai thì không thể trách mình được, ngâm cứu bài của bạn này thì có mà đến sang năm( hôm nay 29 rồi ), thôi đằng nào thì cũng thanks vì công trình của bạn ghê quá.

  4. #3
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.776
    Cảm ơn
    1.540
    Điểm
    4.131/2.750 bài viết

    Default said

    Hồi trước lúc đang học pascal mình cũng mấp mé lần mò làm bài này...
    Hồi đó chỉ mới biết ngôn ngữ chứ ko hiểu thuật toán là gì nên search gu gồ làm sao sao mà từ ngày dương + - * / thế nào mà ra được ngày âm
    Thấy trên các diễn đàn ng` ta viết toàn bằng Java với VB,... đổi từ lịch dương qua tổng ngày juli j` đó rồi tính điểm sóc,....
    ngồi mấy ngày luận, dịch, rồi cũng demo được 1 cái nhưng test thì kết quả sai tùm lum hết chả biết sửa sai chố nào mà sửa nên bỏ luôn ............

  5. #4
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.116
    Cảm ơn
    693
    Điểm
    1.254/559 bài viết

    Default Thực ra không phải mình viết code, chỉ là dịch code thôi

    Trong trang web mình ghi ở trên đó, có code ghi ở ngôn ngữ C.
    Mình chỉ dịch nó sang Pascal thôi.


    Hỏi bên lề phát: tắt bỏ chế độ viết tiếng việt thì ấn phím gì? mình dùng Chrome không thấy hiện thanh điều khiển phía dưới. <không phải spam đâu nha>
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  6. #5
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.776
    Cảm ơn
    1.540
    Điểm
    4.131/2.750 bài viết

    Default

    Trích kien_coi_1997 View Post
    Trong trang web mình ghi ở trên đó, có code ghi ở ngôn ngữ C.
    Mình chỉ dịch nó sang Pascal thôi.


    Hỏi bên lề phát: tắt bỏ chế độ viết tiếng việt thì ấn phím gì? mình dùng Chrome không thấy hiện thanh điều khiển phía dưới. <không phải spam đâu nha>
    Chỉ có phím tắt là F9 để chuyển kiểu gõ Telex - Vni - Vnqr
    Hình như ko có on/off
    nếu thấy phiền phức thì tắt gõ tiếng việt của vietkey hoặc unikey trên máy tính thôi..
    mà gõ cả 2 kiểu này quen rồi nên thấy cũng bt`..

  7. #6
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.116
    Cảm ơn
    693
    Điểm
    1.254/559 bài viết

    Default

    Trong Unikey thì nếu gõ tiếng Anh nó trả về tiếng Anh.
    Lẽ nào cứ để gõ thành Pấcl
    <bực lắm>
    rất mong các admin cho thêm nút on off vào phát
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  8. #7
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.776
    Cảm ơn
    1.540
    Điểm
    4.131/2.750 bài viết

    Default

    Trích kien_coi_1997 View Post
    Trong Unikey thì nếu gõ tiếng Anh nó trả về tiếng Anh.
    Lẽ nào cứ để gõ thành Pấcl
    <bực lắm>
    rất mong các admin cho thêm nút on off vào phát
    gõ thêm để triệt dấu chứ sao đâu.. (hay tại mềnh gõ nhiều, khổ nhiều nên quen nhể )

    ví dụ pascal thì gõ passscal
    triệt được dấu là xong chứ sao đâu. (thêm có 1 2 nhát)
    (đây là khi để cả gõ TV của dd với TV của Unikey đó)

  9. #8
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.116
    Cảm ơn
    693
    Điểm
    1.254/559 bài viết

    Default

    Trích Tung_Huynh View Post
    gõ thêm để triệt dấu chứ sao đâu.. (hay tại mềnh gõ nhiều, khổ nhiều nên quen nhể )

    ví dụ pascal thì gõ passscal
    triệt được dấu là xong chứ sao đâu. (thêm có 1 2 nhát)
    (đây là khi để cả gõ TV của dd với TV của Unikey đó)
    hết nói: 1.lâu 2.viết xong phải chỉnh lại 3.nhiều lúc vội
    thôi nếu ai thấy mình viết pấcl thì từ dịch là pascal nhé
    <bức xúc>
    víu=virus
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  10. #9
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.116
    Cảm ơn
    693
    Điểm
    1.254/559 bài viết

    Default

    Mình xin giới thiệu các chương trình con trong unit DateUtils:
    Chép từ:

    Code:
    DateTimeToJulianDate  
    Converts a TDateTime value to a Julian date representation
    
    DayOfTheWeek
    Extracts the day of the week from a DateTime value
    
    JulianDateToDateTime
    Convert a Julian date representation to a TDateTime value.
    
    Today
    Return the current date
    
    TryEncodeDateTime
    Encode a Year, Month, Day, Hour, minute, seconds, milliseconds tuplet to a TDateTime value
    
    ...
    Và đây là một số chương trình con trong unit sysutils:

    Code:
    Name	Description
    DateTimeToFileDate	Convert DateTime type to file date
    DateTimeToStr	Construct string representation of DateTime
    DateTimeToString	Construct string representation of DateTime
    DateTimeToSystemTime	Convert DateTime to system time
    DateTimeToTimeStamp	Convert DateTime to timestamp
    DateToStr	Construct string representation of date
    Date	Get current date
    DayOfWeek	Get day of week
    DecodeDate	Decode DateTime to year month and day
    DecodeTime	Decode DateTime to hours, minutes and seconds
    EncodeDate	Encode year, day and month to DateTime
    EncodeTime	Encode hours, minutes and seconds to DateTime
    FormatDateTime	Return string representation of DateTime
    IncMonth	Add 1 to month
    IsLeapYear	Determine if year is leap year
    MSecsToTimeStamp	Convert nr of milliseconds to timestamp
    Now	Get current date and time
    StrToDateTime	Convert string to DateTime
    StrToDate	Convert string to date
    StrToTime	Convert string to time
    SystemTimeToDateTime	Convert system time to datetime
    TimeStampToDateTime	Convert time stamp to DateTime
    TimeStampToMSecs	Convert Timestamp to number of millicseconds
    TimeToStr	return string representation of Time
    Time	Get current tyme
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  11. Có 1 thành viên cảm ơn kien_coi_1997 cho bài viết này:
    rac1 (23-07-2011)

  12. #10
    htDestiny's Avatar
    htDestiny vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Jun 2009
    Bài
    1
    Cảm ơn
    0
    Điểm
    0/0 bài viết

    Default

    Sai tùm lum cả rồi ông em ơi.
    "
    Chuyen doi Duong-Am ABC

    Hom nay 1/4/1979, chuong trinh tinh ra ngay am lich bang:
    Ngay: 5 = QuyMao
    Thang: 2 = DinhMao
    Nam: 1979 = KiMui
    "
    Trong khi:
    1 Tháng 4 năm 1979

    Chủ Nhật
    5 Tháng Ba (T)
    Năm Kỷ Mùi
    Tháng Mậu Thìn
    Ngày Mậu Tuất
    Giờ Nhâm Tý
    Tiết Xuân phân

  13. #11
    ctheanh's Avatar
    ctheanh vẫn chưa có mặt trong diễn đàn Gà Con
    Tham gia
    Nov 2009
    Bài
    2
    Cảm ơn
    0
    Điểm
    0/0 bài viết

    Default

    Thực ra phải sửa lại 1 chút mới đúng.Ở trên lại dùng vòng lặp repeat bị sai,mình sửa lại như thế này thì sẽ đúng.
    Code:
    function getLeapMonthOffset(a11, timeZone:LongInt):LongInt;
    var k, last, arc, i:LongInt;
    BEGIN
       k := Trunc((a11 - 2415021.076998695) / 29.530588853 + 0.5);
       last := 0;
       i := 1; // We start with the month following lunar month 11
       arc := getSunLongitude(getNewMoonDay(k+i, timeZone), timeZone);
       while (arc <> last) and ( i < 14) do
         begin
          last := arc;
          i:=i+1;
          arc := getSunLongitude(getNewMoonDay(k+i, timeZone), timeZone);
         end;
       Result:=(i-1);
    END;

 

 

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •