線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1473
推到 Plurk!
推到 Facebook!

請教這個程式碼中第二個else代表什麼意思?

答題得分者是:Justmade
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-18 15:25:04 IP:210.201.xxx.xxx 未訂閱
請教下面程式碼中第二個else代表什麼意思? 照下面這個語法能用上3 個else?如可以第3個else又代表什麼意思? if IsLeapYear(iYear) then Result:=29 else Result:=28 else Result:=0; end; aric
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-18 15:36:39 IP:211.21.xxx.xxx 未訂閱
引言: 請教下面程式碼中第二個else代表什麼意思? 照下面這個語法能用上3 個else?如可以第3個else又代表什麼意思? if IsLeapYear(iYear) then Result:=29 else Result:=28 else Result:=0; end;
您確定您的程式碼是這樣? 這樣應該無法Compiler吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-18 16:01:42 IP:218.16.xxx.xxx 未訂閱
以下的是想像喔 :
function DaysOfMonth(Month) : Integer;
Case Month of 
  1,3,5,7,8,10,12 :
    result := 31;
  4,6,9,11 :
    result := 30;
  2 :
    if IsLeapYear(iYear) then
      Result:=29
    else // if
      Result:=28;
  else // case
    Result:=0;
end; // case
若是這樣的話,第二個 else 就是 case (或另一個外層的 if ) 的而不屬於 if IsLeapYear 的。
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-20 12:38:35 IP:210.201.xxx.xxx 未訂閱
引言: 以下的是想像喔 :
function DaysOfMonth(Month) : Integer;
Case Month of 
  1,3,5,7,8,10,12 :
    result := 31;
  4,6,9,11 :
    result := 30;
  2 :
    if IsLeapYear(iYear) then
      Result:=29
    else // if
      Result:=28;
  else // case
    Result:=0;
end; // case
若是這樣的話,第二個 else 就是 case (或另一個外層的 if ) 的而不屬於 if IsLeapYear 的。
哇厲害我的程式show不完全還能猜對 那對以下這個程式能指點我一、二嗎(引用 Flyup兄的文章) http://delphi.ktop.com.tw/topic.php?topic_id=25433 我有三個問題註解在以下程式碼旁: function MonthDays(iYear,iMonth:Word):Word; begin case iMonth of 1,3,5,7,8,10,12: Result:=31; 4,6,9,11: Result:=30; 2://如果是閏年 if IsLeapYear(iYear) then Result:=29 else Result:=28 else Result:=0; end; end; function GetLeapMonth(iLunarYear:Word):Word; var Flag:Byte; begin Flag:=gLunarMonth[(iLunarYear-START_YEAR) div 2]; //這個if..else..end內的程式是什麼意思 if (iLunarYear-START_YEAR) mod 2=0 then Result:=Flag shr 4 else Result:=Flag and $0F; end; //以下的if ilunaryearbegin有錯請教如何改且這個lunarmonthdays function是什麼意思又最下面的makelong這個涵數delphi中找不到 makelong有什麼作用? function LunarMonthDays(iLunarYear,iLunarMonth:Word):Longword; var Height,Low:Word; iBit:Integer; begin if iLunarYearbegin Result:=30; Exit; end; Height:=0; Low:=29; iBit:=16-iLunarMonth; if (iLunarMonth>GetLeapMonth(iLunarYear)) and (GetLeapMonth(iLunarYear)>0) then Dec(iBit); if (gLunarMonthDay[iLunarYear-START_YEAR] and (1 shl iBit))>0 then Inc(Low); if iLunarMonth=GetLeapMonth(iLunarYear) then if (gLunarMonthDay[iLunarYear-START_YEAR] and (1 shl (iBit-1)))>0 then Height:=30 else Height:=29; Result:=MakeLong(Low,Height); end; function LunarYearDays(iLunarYear:Word):Word; var Days,i:Word; tmp:Longword; begin Days:=0; for i:=1 to 12 do begin tmp:=LunarMonthDays(iLunarYear,i); //hiword和loword在delphi中找不到是什麼作用能用lo或hi代替嗎? Days:=Days HiWord(tmp); Days:=Days LoWord(tmp); end; Result:=Days; end; aric
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-20 13:31:27 IP:218.16.xxx.xxx 未訂閱
哇..中計...答了題目還來些難的...呵呵
引言: function GetLeapMonth(iLunarYear:Word):Word; var Flag:Byte; begin Flag:=gLunarMonth[(iLunarYear-START_YEAR) div 2]; //這個if..else..end內的程式是什麼意思 if (iLunarYear-START_YEAR) mod 2=0 then Result:=Flag shr 4 else Result:=Flag and $0F; end;
由於 gLunarMonth[0..74]內每個 byte 都放2年的資料,這個 if else 就是找出 iLunarYear 是單數年還是雙數年然後提出前半或後半的資料
引言: makelong這個涵數delphi中找不到makelong有什麼作用? hiword和loword在delphi中找不到是什麼作用能用lo或hi代替嗎?
makelong / hiword / loword 可能是他自定的 function, 不可用 hi / lo 代替因 makelong / hiword / loword 是針對 longword (32bit) 但 hi/lo 是針對 16 bit的。 理論上這三個 function 應如下 [code] function makelong(hiw, low : word) : longword; begin result := hiw * 65535 low; end function hi(longw : longword) : word; begin result := INT(longw / 65535) end; function lo(longw : longword) : word; begin result := Round(Frac(longw / 65535) * 65535); end; [code]
引言: 以下的if ilunaryearbegin有錯請教如何改
這個我也不知道耶...那邊的 code 沒 define 這個參數...
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-20 13:54:56 IP:210.201.xxx.xxx 未訂閱
引言: 別這麼說這些資訊對我已經有很大的幫助了總之>< face="Verdana, Arial, Helvetica"> aric
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-20 14:22:08 IP:218.16.xxx.xxx 未訂閱
Funtion 名錯了修正如下
引言: 理論上這三個 function 應如下
function makelong(hiw, low : word) : longword;
begin
  result := hiw * 65535   low;
end;    function hiword(longw : longword) : word;
begin
  result := INT(longw / 65535) 
end;    function loword(longw : longword) : word;
begin
  result := Round(Frac(longw / 65535) * 65535);
end;
系統時間:2024-05-07 16:26:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!