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

請問switch 結構是否能用string or AnsiString 的型態來判斷呢

答題得分者是:artist1002
terence_lee
初階會員


發表:62
回覆:82
積分:28
註冊:2004-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-03 14:34:59 IP:61.221.xxx.xxx 未訂閱
想請問各位前輩,我想要用switch 去做字串的判斷不知可行,我在help查詢switch的結果為 switch-type Specifies an int, char, enum type, or an identifier that resolves to one of these types. 如果我想要的是 AnsiString x="abcdef"; switch(x.subString(1,1)) { case "a" : ShowMessage("a"); break; case "b" : ShowMessage("b"); break; case "c" : ShowMessage("c"); break; } 是否可行呢?
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-03 17:44:18 IP:211.76.xxx.xxx 未訂閱
switch 必須是 int 型態 在這個例子可以用下面的方式來作
AnsiString x="abcdef";    switch(x[1])
{
case 'a' : ShowMessage("a"); break;
case 'b' : ShowMessage("b"); break;
case 'c' : ShowMessage("c"); break;
}
如果要判斷的是字串的話,建議先做字串表如TStringList的方式 再用IndexOf來做switch的動作.如
TStringList *slList;
slList = new TStringList();
slList->Add("abc")
slList->Add("def")
slList->Add("ghi")    AnsiString strtest="def";
switch(slList->IndexOf(strtest))
{
case 0 : ShowMessage("abc"); break;
case 1 : ShowMessage("def"); break;
case 2 : ShowMessage("ghi"); break;
default : ShowMessage("No Match"); break;
}
terence_lee
初階會員


發表:62
回覆:82
積分:28
註冊:2004-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-03 18:21:13 IP:61.221.xxx.xxx 未訂閱
謝謝 artist1002 大大的回應,您的方法相當好,用TStringList來達成,小弟目前的做法是用指標的形式,就像下面一樣,因為一來不想改用if來做,另一方面也不想多個指標來使用說.. AnsiString x="abcdefgh"; char *s; s=x.c_str(); switch(s[1]) { case 'a' : ShowMessage("a"); break; case 'b' : ShowMessage("b"); break; case 'c' : ShowMessage("c"); break; }
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-04 16:48:47 IP:211.76.xxx.xxx 未訂閱
引言: 謝謝 artist1002 大大的回應,您的方法相當好,用TStringList來達成,小弟目前的做法是用指標的形式,就像下面一樣,因為一來不想改用if來做,另一方面也不想多個指標來使用說.. AnsiString x="abcdefgh"; char *s; s=x.c_str(); switch(s[1]) { case 'a' : ShowMessage("a"); break; case 'b' : ShowMessage("b"); break; case 'c' : ShowMessage("c"); break; }
不用轉成char *指標來作. AnsiString類別有[]的operation 如下就可以了
AnsiString x="abcdefgh";     switch(x[1])
 {
 case 'a' : ShowMessage("a"); break;
 case 'b' : ShowMessage("b"); break;
 case 'c' : ShowMessage("c"); break;
 }
系統時間:2024-04-25 7:59:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!