以下為同學們常問助教的 Q&A
有問題可以先來這裡找找。
同學們最常出錯的地方為迴圈內的陣列使用錯誤,出錯後建議先檢查。
如果遇到問題如下圖(執行new project時出現!),大都不會出現~~
解決方法:
1、按一下 [開始],再按一下 [執行]。
2、在 [ 開啟 ] 方塊中,輸入 %systemroot%\syswow64\regedit ,然後按一下 [確定]
官方解釋
如果出現 缺少 rtl270.bpl 而產生的 access violation,如下圖
解決方法:
1、尋找 rtl270.bpl 檔案的位置 (C:\Program Files (x86)\Embarcadero\Studio\21.0\bin)
點左鍵按內容/複製路徑 (類似上面路徑,複製到bin就可以了)
2、設定→系統/關於/ 進入進階系統設定
進階 → 環境變數
點選Path → 編輯
點選 新增 → 填上剛剛複製的路徑
A0.1在問問題之前,須確定問題發生的範圍,越具體越好。如助教我程式有BUG與助教我這行程式或是這部分的程式有問題,這兩種會有明顯的差異。
A0.2在問問題之前,可以先查一查手邊能查到的資料。如此Q&A!!
Q1.1每一小段時間就會出問題
A1.1 .1有可能下載到專業版本的,請重新註冊與安裝社區版(Community )。可參考重新安裝建議。
A1.1.2 有可能被防毒軟體殺掉,請設定你的防毒軟體將Compiler放入白名單中,或是暫時關閉防毒。
Q1.2Cannot find ~.exe
A1.2 有可能exe被防毒軟體殺掉,請設定你的防毒軟體將Compiler放入白名單中,或是暫時關閉防毒。
Q1.3程式修改、編譯 (按工具列綠色三角鈕)後,Builder 竟然執行的是前次編譯的 ~.exe
A1.3
(1.1) 利用 Project/Build ~.cpp (或 Build #) 編譯修改的 ~程式 (或 *專案) (圖中紫色框選項,擇一可也)
(1.2) 以 Project/Clear *專案 清除之前編譯成功的所有檔案 (圖中橘色框選項)
(2) click 工具列綠色三角鈕。
預期 (1.1)+(2) 或 (1.2)+(2) 可解決問題!(若否,煩請留言。老師這兒沒這情況的電腦,無法肯定之。)
Q1.4編寫程式碼時,打入 -> 時,後面沒有出現自動提示
A1.4 點選Project->Options->C++ compiler->Use 'Classic' Borland compiler 將此選想勾選
Q2.1陣列輸出的結果出錯或是跳出與以下相似之訊息
access violation at address 00000000, read of address 00000000
A.2.1 .1你使用的空間位置已超出你宣告的陣列大小。
如int x[10]; x[10] = 0 ; 陣列位置從0開始,宣告為10能使用的位置為0~9,x[10]已超過9。
A.2.1 .2你使用的空間位置根本沒有定值。
如int n ; int x[10]; x[n] = 0 ;n 未定值
n = 1 ; x[n] = 0 ; 即可
A2.1.3函數錯誤,請觀看Q3.3
Q2.2陣列宣告過大,程式無法執行,無錯誤訊息
A.2.2 使用的動態陣列,可使用較大的空間
Q2.3亂數結果均相同
A2.3不要把設定種子的程式碼如randomize()、srand( time(NULL) )等等,放入與輸出相同層的迴圈中。(建議非必要盡量不要放在迴圈裡)
Q2.4執行程式期間,電腦當掉無錯誤提示
A2.4主要可能是
Q3.1出現以下錯誤訊息
[ilink32 Error] Error: Unresolved external '__fastcall TForm1::Button2Click(System::TObject *)'
這表示你把點擊元件兩下後,Compiler自動產生的程式碼(如下)刪除了。
void __fastcall TForm1::Button2Click(TObject *Sender) { }
A3.1.1你必須點擊Unit.h的標籤或是去檔案夾找到此檔案,把宣告此函數給刪掉。
如我問題的範例我把點擊按鈕2(Button2Click)的函數刪掉。
我就要去.h檔案內把void __fastcall Button2Click(TObject *Sender);也刪掉。
之後會跳出訊息點擊YES即可執行。
A3.1.2你也可以重新做一個專案(極度不推薦)
Q3.2 ilink32 Error +路徑 : 如下圖
此問題通常發生在把做好的專案移到別台電腦上執行
A3.2.1 通常情況下在原電腦先做好獨立執行檔在轉移可解決
A3.2.2以上方法行不通請參考下圖: 關掉builder後,刪除對應OBJ ,再重新編譯。
Q3.3發現函數(function)內元件無法使用如Memo1->Lines->Add("") ;
A3.3.1請在元件之前加上form的名字,如Form1->Memo1->Lines->Add("") ;
A3.3.2如以上方法以使用且錯誤訊息與Q2.1類似
表示你的函數寫在了Form宣告之前,如TForm1 *Form1;
將你的函數移至宣告之後即可。
Q3.4Unable to perform link
A3.4請參考以下連結
如果有同學有新的Q&A(必須有解答),經助教認可且為其他學生可能會發生之常見問題,可算課堂加分