請問我該如何縮減我下列的程式碼 |
答題得分者是:jow
|
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
[code cpp] if(ComboBox7->Text=="Snow") //判斷選取的動作內容並傳遞給動作參數 { action[8]=SNOW; } if(ComboBox7->Text=="Left") { action[8]=LEFT; } if(ComboBox7->Text=="Right") { action[2]=RIGHT; } if(ComboBox7->Text=="Up") { action[8]=UP; } if(ComboBox7->Text=="Down") { action[8]=DOWN; } if(ComboBox7->Text=="Open") { action[8]=OPEN; } if(ComboBox7->Text=="Close") { action[8]=CLOSE; } if(ComboBox7->Text=="Flash") { action[8]=FLASH; } if(ComboBox7->Text=="Flash-Go") { action[8]=FLASH_GO; } if(ComboBox7->Text=="Doff") { action[8]=DOFF; } if(ComboBox7->Text=="Big") { action[8]=BIG; } if(ComboBox7->Text=="Jump") { action[8]=JUMP; } if(ComboBox7->Text=="Shift") { action[2]=SHIFT; } if(ComboBox7->Text=="Sqz") { action[8]=SQZ; } if(ComboBox7->Text=="L-Open") { action[8]=L_OPEN; } if(ComboBox7->Text=="R-Open") { action[8]=R_OPEN; } if(ComboBox7->Text=="Random") { action[8]=RANDOM; }[/code] 因為我對於C Builder不是非常了解 我應該如何運用指標縮減我這段的程式碼 |
tcSweey
一般會員 發表:7 回覆:19 積分:15 註冊:2005-01-04 發送簡訊給我 |
action 指的是變數嗎?另外你所定義的SNOW 又是為何? 如果你的功能是需要以ComboBox7來判斷的話,我建議可以以ItemIndex 來判斷(ComboBox7->ItemIndex) 如果你本身的action 是Function 的指標形態,例如宣告為 unsigned int(*const Action[20])(unsigned int k)={ //0 1 2 3 ........ SNOW, LEFT, RIGHT, UP, ....... } 那麼只需以下寫法就可以了 unsigned int (* act)(unsigned int); act[ComboBox7->ItemIndex]; |
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
#define SNOW 0x80
#define LEFT 0x81 #define RIGHT 0x82 #define UP 0x83 #define DOWN 0x84 #define OPEN 0x85 #define CLOSE 0x86 ..... ..... byte action[10]; 用來接收動作的指令碼@@ 然後我的ComboBox 是用來選取動作的String 所以我用上面的方式來判斷 結果老師希望我改成指標的方式縮減我的程式碼 但是我有點不了解 我先try一下你說明的方法 看了你的方法有點靈感了 謝謝感恩^^ ===================引 用 tcSweey 文 章===================
action 指的是變數嗎?另外你所定義的SNOW 又是為何? 如果你的功能是需要以ComboBox7來判斷的話,我建議可以以ItemIndex 來判斷(ComboBox7->ItemIndex) 如果你本身的action 是Function 的指標形態,例如宣告為 unsigned int(*const Action[20])(unsigned int k)={ //0 1 2 3 ........ SNOW, LEFT, RIGHT, UP, ....... } 那麼只需以下寫法就可以了 unsigned int (* act)(unsigned int); act[ComboBox7->ItemIndex]; |
tcSweey
一般會員 發表:7 回覆:19 積分:15 註冊:2005-01-04 發送簡訊給我 |
|
powervic
一般會員 發表:5 回覆:7 積分:2 註冊:2008-03-17 發送簡訊給我 |
恩~用這個方法的確可行
那如果是要計算checkbox勾取的個數呢? 能否有指標的方式解決呢? [code cpp] bool is_Checked[10]; //接收是否勾取的訊息已便做判別動作 int check_Count=0; if(CheckBox1->Checked == true) //判斷是否勾取並記錄數量 { check_Count ; } if(CheckBox2->Checked == true) { check_Count ; } if(CheckBox3->Checked == true) { check_Count ; } if(CheckBox4->Checked == true) { check_Count ; } if(CheckBox5->Checked == true) { check_Count ; } if(CheckBox6->Checked == true) { check_Count ; } if(CheckBox7->Checked == true) { check_Count ; } if(CheckBox8->Checked == true) { check_Count ; } if(CheckBox9->Checked == true) { check_Count ; } if(CheckBox10->Checked == true) { check_Count ; } is_Checked[0]=CheckBox1->Checked; //是否勾取訊息予以傳遞 is_Checked[1]=CheckBox2->Checked; is_Checked[2]=CheckBox3->Checked; is_Checked[3]=CheckBox4->Checked; is_Checked[4]=CheckBox5->Checked; is_Checked[5]=CheckBox6->Checked; is_Checked[6]=CheckBox7->Checked; is_Checked[7]=CheckBox8->Checked; is_Checked[8]=CheckBox9->Checked; is_Checked[9]=CheckBox10->Checked; [/code] 我們老大說這樣寫是愚公移山~但我對BCB了解的還不夠深入 那我該如何運用指標改寫呢? ===================引 用 tcSweey 文 章=================== powervic 你好: 如果是你說的那樣,那麼只要寫成 action[8]=ComboBox7->ItemIndex 0x80; 我想應該就可以了
編輯記錄
powervic 重新編輯於 2008-03-25 10:01:05, 註解 無‧
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
[code cpp]
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int CheckCount=0; bool is_Checked[10]; for(int i=0;i<10;i ){ AnsiString S="CheckBox" IntToStr(i 1);//1~10 TCheckBox* cbx=(TCheckBox*)FindComponent(S); is_Checked[i]=cbx!=NULL&&cbx->Checked; if(is_Checked[i])CheckCount ; } } //--------------------------------------------------------------------------- [/code]
編輯記錄
jow 重新編輯於 2008-03-25 11:06:13, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |