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

很軌異的動態產生的問題喔

 
khaupe
一般會員


發表:28
回覆:25
積分:15
註冊:2003-06-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-04 16:25:52 IP:140.115.xxx.xxx 未訂閱
所有ED[i]->Text取出文字內容都沒問題 但只要i為0就一定出錯 而且宣告TEdit *ED[10] 若是for(i = 0 ; i<=10 ; i ){ ED[i] = new TEdit(Application) ............. } 則StringGrid的開檔必出問題 必須要i<=9才行
附加檔案:40012_測試.zip
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-22 15:38:21 IP:221.169.xxx.xxx 未訂閱
C/C 語言裡面定義的array是從0到n-1 也就是你定義了 TLabel *LB[14] 的話 合理的可用範圍為 LB[0]到LB[13] 取用LB[14]會存取到別的記憶體空間,也就是如此 for(int i = 10 ; i <= 14 ; i ){ LB[i] = new TLabel(Application) ; LB[i]->Parent = GB[4] ; LB[i]->Top = 100 (i-6)*20 ; LB[i]->Left = 10 ; } 當i=14產生新的TLabel的時候,會寫到別的記憶體空間 很不幸的,剛好把新產生的資料(記憶體空間指標)覆寫到ED[0] (因為在.h的宣告中,ED的宣告剛好接在LB的後面) 導致ED[0]讀出的資料都是錯誤的 第二個問題也是相同的問題 ED[10]產生的時候也是會寫到你不應該去存取的記憶體空間
系統時間:2024-05-18 21:24:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!