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

如何解決元件上FOR迴圈問題

答題得分者是:ChungLin.Net
timshadow
一般會員


發表:7
回覆:3
積分:2
註冊:2007-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-29 14:03:34 IP:140.122.xxx.xxx 訂閱
請問一下我用下面的程式
問題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; } }
編輯記錄
timshadow 重新編輯於 2007-08-29 14:04:20, 註解 無‧
timshadow 重新編輯於 2007-08-29 14:05:28, 註解 無‧
timshadow 重新編輯於 2007-08-29 14:06:21, 註解 無‧
timshadow 重新編輯於 2007-08-29 14:43:08, 註解 無‧
ChungLin.Net
中階會員


發表:2
回覆:33
積分:52
註冊:2006-07-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-29 14:50:23 IP:59.120.xxx.xxx 訂閱
問題在於你只有宣告 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-29 16:13:42 IP:140.122.xxx.xxx 訂閱
謝謝ChungLin.Net大大
已經解決了~~感謝~~
系統時間:2024-04-27 2:30:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!