如何解決元件上FOR迴圈問題 |
答題得分者是:ChungLin.Net
|
timshadow
一般會員 發表:7 回覆:3 積分:2 註冊:2007-08-23 發送簡訊給我 |
請問一下我用下面的程式
問題1:complier可以過,但是只要按下按鍵就會顯示 exe raised exception class EAccessViolation with message "Access violation at address 00402377 in module 這要如何解決? 問題2:如果我在Form1上加上Button元件,則我的image就不能在Form1上移動,因為我只要按方向鍵, 移標就只會卡在botton上面,這是要如何解決? int x1,y1; TShape *Shape[120]; //有120格相同大小的停車格 void __fastcall TForm1::keydown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key==37) //左 car_left->Left--; LabeledEdit6->Text = (car_left->Left); //car_left是image if(Key==38) //上 car_left->Top--; LabeledEdit5->Text = (car_left->Top); if(Key==39) //右 car_left->Left ; LabeledEdit6->Text = (car_left->Left); if(Key==40) //下 car_left->Top ; LabeledEdit5->Text = (car_left->Top); for(int i=1;i<=120;i ) //問題1的所在,只要for迴圈跑,就會當掉,可能是shape[i]的問題吧,我不清楚 { if(Shape[i]->Left==(car_left->Left) ) //所有的shape若是等於正在移動的image,則image就在停車格中 ShowMessage("車已在停車位中"); return; } } |
ChungLin.Net
中階會員 發表:2 回覆:33 積分:52 註冊:2006-07-26 發送簡訊給我 |
問題在於你只有宣告 TShape 物件
卻沒有建立 TShape 的物件內容 所以你的 Shape 陣列物件記憶體 全部指向 NULL,當記憶體中找 不到該物件的位址,就會發生錯誤 <textarea class="cpp" rows="10" cols="60" name="code">for(int i=1;i<=120;i ) { if( Shape[i] == NULL) Shape[i] = new TShape(this); // 加上這段即可 if(Shape[i]->Left==(car_left->Left) ) ShowMessage("車已在停車位中"); return; } </textarea>
------
無限的想像,無盡的延伸。 |
timshadow
一般會員 發表:7 回覆:3 積分:2 註冊:2007-08-23 發送簡訊給我 |
謝謝ChungLin.Net大大
已經解決了~~感謝~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |