[問題] bcb動態產生物件後改變物件屬性?

看板C_and_CPP (C/C++)作者 (gino0717)時間13年前 (2012/08/29 02:39), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) BCB6 問題(Question): 我想設計個程式是動態產生數個TImage物件後再用計時器改變圖片的座標 程式碼(Code):(請善用置底文網頁, 記得排版) 我在timer中放入以下程式,並用step來判斷程式執行的階段 switch(step) { case 0: TImage** LEI = new TImage*[4]; for (int i=0 ; i<4 ; ++i){ LEI[i] = new TImage(NULL); LEI[i]->AutoSize = false; LEI[i]->Left = 30; LEI[i]->Top = 0-i*10; LEI[i]->Height = 90; LEI[i]->Width = 60; LEI[i]->Parent=this; LEI[i]->Picture=Image3->Picture; LEI[i]->Transparent=true; } step=1; break; case 1: for (int i=0 ; i<4 ; ++i){ LEI[i]->Top +=50; } break; default: break; } 結果會產生[C++ Error] Unit1.cpp(156): E2126 Case bypasses initialization of a local variable的訊息,似乎在動態宣告元件後switch就不能用了。我試著把宣告 的那段程式移到Form或是做個button按下去後會產生Image,不過都沒辦法再去更動LEI[i] ->Top,有什麼方法可以解決呢? 小弟初接觸C++還請各位先進不吝指教。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.219.115 ※ 編輯: gino0717 來自: 1.160.219.115 (08/29 02:40) ※ 編輯: gino0717 來自: 1.160.219.115 (08/29 02:40) ※ 編輯: gino0717 來自: 1.160.219.115 (08/29 02:49)

08/29 03:20, , 1F
TImage** LEI 變數宣告放 switch 外面試試 ?
08/29 03:20, 1F
感謝,雖然可以進行到step 的case 2了,但會跑出這個錯誤訊息 http://ppt.cc/-TLq ※ 編輯: gino0717 來自: 1.160.219.115 (08/29 04:04)

08/29 04:07, , 2F
這應該就是設計邏輯上的問題了吧?籠統的說是非法讀取調用
08/29 04:07, 2F

08/29 17:26, , 3F
把 TImage** LEI 放到全域去,我想你可能沒注意生命週期。
08/29 17:26, 3F

08/29 17:28, , 4F
雖然跑是可以跑,但我猜在你了解為何之前,可能會有問題。
08/29 17:28, 4F
可以動了!感謝! ※ 編輯: gino0717 來自: 114.24.78.173 (08/29 20:55)
文章代碼(AID): #1GFH1kEo (C_and_CPP)
文章代碼(AID): #1GFH1kEo (C_and_CPP)