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

CASE OF的問題

尚未結案
vivi666666
初階會員


發表:83
回覆:94
積分:35
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-17 11:41:38 IP:203.69.xxx.xxx 未訂閱
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段
比爾丐自
初階會員


發表:33
回覆:115
積分:29
註冊:2003-02-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-17 12:04:33 IP:219.133.xxx.xxx 未訂閱
[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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-17 12:07:19 IP:61.219.xxx.xxx 未訂閱
不知道我理解的部份是不是你要問的    '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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-17 12:16:15 IP:211.76.xxx.xxx 未訂閱
可以用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-17 12:57:49 IP:203.69.xxx.xxx 未訂閱
不好意思,我修正下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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-17 13:13:54 IP:203.95.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-17 13:18:40 IP:211.76.xxx.xxx 未訂閱
引言: 不好意思,我修正下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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-17 13:35:08 IP:203.69.xxx.xxx 未訂閱
引言: 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 區塊中的 '''' 只代表一個 ' !!
1: ELSE 要到Z段---不曉如何寫 ---改要到Y段 2:是要執行該 Z 段的程式碼後,再CHECK A 是否 > 30 若 A> 30 執行 -3的動作,簡單說(A-3) >30就要一直執行該 Z 段 ELSE 執行一些工作後 跳開此CASE,不做 CHECK A 是否>30
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-17 15:17:41 IP:203.95.xxx.xxx 未訂閱
引言: 1: ELSE 要到Z段---不曉如何寫 ---改要到Y段 2:是要執行該 Z 段的程式碼後,再CHECK A 是否 > 30 若 A> 30 執行 -3的動作,簡單說(A-3) >30就要一直執行該 Z 段 ELSE 執行一些工作後 跳開此CASE,不做 CHECK A 是否>30
ok, 這樣的流程比較 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 區塊中的 '''' 只代表一個 ' !!
系統時間:2024-06-02 6:42:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!