CASE OF的問題 |
尚未結案
|
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
|
比爾丐自
初階會員 發表:33 回覆:115 積分:29 註冊:2003-02-14 發送簡訊給我 |
[quote]
CASE OF的問題
VAR A:DOUBLE;
case FMTP[1] of
'A':begin
XXXXX---------Z段
XXXXX
IF A > 30 BEGIN
XXXX
要到Z段----不曉如何寫
ELSE
要到Z段---不曉如何寫
end;
'B':begin
xxxx
end;
'C':begin
xxxx
end;
end;
XXXXXXXXX---------Y段 有两种办法:
1:在要到z的地方直接用goto转向z,当然z用标签。一般不提倡用此办法
2:可以将z的地方的方法可直接写成一个方法或函数而后在要转向处去直接调用此方法即可.
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
不知道我理解的部份是不是你要問的 'A':begin
XXXXX---------Z段
XXXXX
IF A > 30 BEGIN
XXXX
要到Z段----不曉如何寫
ELSE
要到Z段---不曉如何寫 繼然不管A是否大於30都要執行Z段
那為什麼不改成如下 --------------------------
IF A > 30 THEn Begin
XXXX 到Z段的程式
--------------------------
另外有很多Call到Z段,
那不如
procedure Z_Program();
Begin
End; CASE OF的問題
VAR A:DOUBLE;
case FMTP[1] of
'A':begin
Z_Program(); XXXXX IF A > 30 THEN BEGIN
XXXX
END;
//因為不管A是否大於30,都要執行Z段程式
Z_Program(); 'B':begin
xxxx
end;
'C':begin
xxxx
end;
end;
XXXXXXXXX---------Y段 然後 Delphi的CASE OF 好像不能用字元,只能用序數型態的變數吧? 不知道你是否是問這個..... ----------------
快滿一年程設師,
日日工作寫程式,
每買樂透眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
可以用 label goto來做,參考下列範例 procedure TForm1.Button25Click(Sender: TObject); label aa,bb,cc,dd; var i:integer; begin i:=StrToInt(Edit2.Text); Case i of 1: goto aa; 2: goto bb; 3: goto cc; else Goto dd; end; aa: showmessage('1'); goto dd; bb: showmessage('2'); goto dd; cc: showmessage('3'); dd:; end;發表人 - cmj 於 2003/06/17 12:56:05 |
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
不好意思,我修正下CASE OF的問題
CASE OF的問題
VAR A:DOUBLE;
case FMTP[1] of
'A':begin
XXXXX---------Z段
XXXXX
IF A > 30 BEGIN ----------> 改 成IF A > 30 THEN BEGIN
XXXX
A:=A - 3 ----------->加此行
要到Z段----不曉如何寫
ELSE
要到Z段---不曉如何寫
end;
'B':begin
xxxx
end;
'C':begin
xxxx
end;
end;
XXXXXXXXX---------Y段 主要是要有迴圈可以一直 CHECK A 值 IF A > 30 BEGIN .... ELSE
就不執行IF A > 30 BEGIN 的內容了.
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 你的問題是一個有問題的流程:
下面的 'A' 區程式會造成無窮迴圈的, 因為無論如何你都要在 if 後回到 Z 段, 請問你的 Z 段是指程式回到該位置, 還是只是執行該 Z 段的程式碼呢?
VAR A:DOUBLE; case FMTP[1] of 'A':begin XXXXX---------Z段 XXXXX IF A > 30 BEGIN ----------> 改 成IF A > 30 THEN BEGIN XXXX A:=A - 3 ----------->加此行 要到Z段----不曉如何寫 end ELSE 要到Z段---不曉如何寫 end; 'B':begin xxxx end; 'C':begin xxxx end; end; XXXXXXXXX---------Y段ps 請注意一下 code 區塊中的 '''' 只代表一個 ' !! |
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: 不好意思,我修正下CASE OF的問題 CASE OF的問題 label zz; VAR A:DOUBLE; case FMTP[1] of 'A':begin zz: XXXXX---------Z段 XXXXX IF A > 30 then BEGIN XXXX A:=A - 3 ----------->加此行 要到Z段----不曉如何寫 goto zz; end ELSE xxxxx; 要到Z段---不曉如何寫 else不要到Z段 end; 'B':begin xxxx end; 'C':begin xxxx end; end; XXXXXXXXX---------Y段 主要是要有迴圈可以一直 CHECK A 值 IF A > 30 BEGIN .... ELSE 就不執行IF A > 30 BEGIN 的內容了.發表人 - cmj 於 2003/06/17 13:24:58 |
vivi666666
初階會員 發表:83 回覆:94 積分:35 註冊:2003-03-05 發送簡訊給我 |
引言: Hi, 你的問題是一個有問題的流程: 下面的 'A' 區程式會造成無窮迴圈的, 因為無論如何你都要在 if 後回到 Z 段, 請問你的 Z 段是指程式回到該位置, 還是只是執行該 Z 段的程式碼呢?1: ELSE 要到Z段---不曉如何寫 ---改要到Y段 2:是要執行該 Z 段的程式碼後,再CHECK A 是否 > 30 若 A> 30 執行 -3的動作,簡單說(A-3) >30就要一直執行該 Z 段 ELSE 執行一些工作後 跳開此CASE,不做 CHECK A 是否>30VAR A:DOUBLE; case FMTP[1] of 'A':begin XXXXX---------Z段 XXXXX IF A > 30 BEGIN ----------> 改 成IF A > 30 THEN BEGIN XXXX A:=A - 3 ----------->加此行 要到Z段----不曉如何寫 end ELSE 要到Z段---不曉如何寫 ---改要到 end; 'B':begin xxxx end; 'C':begin xxxx end; end; XXXXXXXXX---------Y段ps 請注意一下 code 區塊中的 '''' 只代表一個 ' !! |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 1: ELSE 要到Z段---不曉如何寫 ---改要到Y段 2:是要執行該 Z 段的程式碼後,再CHECK A 是否 > 30 若 A> 30 執行 -3的動作,簡單說(A-3) >30就要一直執行該 Z 段 ELSE 執行一些工作後 跳開此CASE,不做 CHECK A 是否>30ok, 這樣的流程比較 ok. 那就配合 repleat... until 像這樣寫: VAR A:DOUBLE; case FMTP[1] of 'A':begin repeat XXXXX---------Z段 XXXXX IF A > 30 BEGIN ----------> 改 成IF A > 30 THEN BEGIN XXXX A:=A - 3 ----------->加此行 //要到Z段----不曉如何寫 end; until ( A <= 30 ); end //ELSE // ---改要到Y段 --這裡可以不用寫任何東東, 自然會執行到 Y 段, 因為 case 的 'A' 結束. end; 'B':begin xxxx end; 'C':begin xxxx end; end; XXXXXXXXX---------Y段ps 請注意一下 code 區塊中的 '''' 只代表一個 ' !! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |