全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1046
推到 Plurk!
推到 Facebook!

一個萬年暦的程式想要理解一下.....急!!!

 
cleverman319
一般會員


發表:5
回覆:1
積分:1
註冊:2005-10-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-23 12:08:31 IP:220.134.xxx.xxx 未訂閱
這是一個萬年暦的程式 , 透過button1來輸入年份, button2來輸入月份後,可以 執行結果如下一張圖檔連結,這是網路上找的所以作者不知名,我也看不懂他中間寫的那一段用"------"框起來的部分,希望各位大大能夠幫我解釋一下,如果可以就近量多寫或著是在旁邊註解一下也好...我不了解萬年暦的公式,不知道要去那兒找,急著想要了解,回答的人我會極力的感謝你的... (因為不會貼圖貼不出來,所以用圖檔連結,抱歉!!) http://homelf.kimo.com.tw/cleverman319/calender1.JPG http://homelf.kimo.com.tw/cleverman319/calender2.JPG 程式如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Button2: TButton; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; a:tbitmap; implementation {$R *.dfm} var sty:integer=1980; stw:integer=2; asky:integer; askm:integer=2; askw:integer; sday:integer=31; i,j,k:integer; ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var X,bb,cc,alday:integer; begin i:=1;j:=1;k:=1;askw:=stw;alday:=0; asky:=strtoint(edit1.Text); askm:=strtoint(edit2.Text); form1.Canvas.TextOut(17,1,'日 一 二 三 四 五 六'); for bb:=1980 to asky-1 do begin if((X mod 4= 0)and(asky mod 100<>0) )then alday:=alday 1; if((X mod 400=0) and (asky mod 100=0))then alday:=alday 1; alday:=alday 365; end; askw:=(alday askw) mod 7; for X:= 1 to askm-1 do begin case X of 1,3,5,7,8,10,12: begin askw:=(31 askw) mod 7 end; 4,6,9,11: begin askw:=(30 askw) mod 7 end; 2: begin askw:=(28 askw) mod 7 end; end; end; case askm of 1,3,5,7,8,10,12: begin sday:=31 end; 4,6,9,11: begin sday:=30 end; 2: begin sday:=28; if((asky mod 4= 0)and(asky mod 100<>0) )then sday:=sday 1; if((asky mod 400=0) and (asky mod 100=0))then sday:=sday 1 end; end; for k:= 1 to 7-askw do begin form1.Canvas.TextOut(17*(askw k),15*i,inttostr(k)); end; for i:= 2 to 6 do begin for j:= 1 to 7 do begin if(k-1 j (i-2)*7 <= sday)then form1.Canvas.TextOut(17*(j),15*i,inttostr(k-1 j (i-2)*7)); end; end; // edit1.Text :=inttostr(askw); button1.Hide ; end; ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); begin close; end;
系統時間:2024-05-17 13:04:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!