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

【BCB】使用 RichEdit 造成程式在結束時產生 "Access Violation" 的問題

答題得分者是:gemi0305
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-28 18:38:47 IP:218.168.xxx.xxx 未訂閱
各位先進: 我有兩個問題 (使用Win2K BCB5&BCB6兩版本均試過): 1. 我以如下順序產生一支簡單的程式: (1)新增一application,在Form1上放入一Button (Button1) (2)新增另一Form (Form2),在其上放入一RichEdit (RichEdit1) (3)當按下 Button1 時會叫出 Form2,以下是Button1Click執行的程式碼: Form2 = new TForm2(NULL); Form2->ShowModal(); 程式執行後,按下 Button1 進入 Form2 ,當關閉 Form2 回到 Form1,再關閉 Form1 結束程式時,就會產生 "Access Violation ..." 的訊息… 我在 BCB5 & BCB6 均試過,都會產生一樣的問題,不知道有沒有人可以幫忙看一下… 2. 我之所以使用 RichEdit 的原因,是因為我想要寫個簡單的英打練習,也就是在 RichEdit 上放入一篇英文文章,以黑色顯示,當照著文章打字時,如果打對的話就將打對的字變成綠色,如果打錯的話,那打錯的字母就會變成紅色…由於先前沒使用過這個元件,所以還在try到底如何用…不知道有沒有人寫過類似的功能,可不可以分享一下心得? 謝謝各位先進…
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-28 18:44:31 IP:61.224.xxx.xxx 未訂閱
因為Form2是你new出來的,new出來的東西在程式結束的時候, 都要delete     
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
     delete Form2;
}
試試看     
國泰平安
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-28 18:54:29 IP:218.168.xxx.xxx 未訂閱
引言: 因為Form2是你new出來的,new出來的東西在程式結束的時候, 都要delete
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
     delete Form2;
}
試試看     
國泰平安 < face="Verdana, Arial, Helvetica"> 謝謝您…但我試過使用 delete Form2; 結果在關閉 Form2 時就會先產生 "Access Violation..."的訊息,另外,我試過 Form2->Close(); 在關閉 Form1 時也產生一樣的問題… 再麻煩您看看… 謝謝…
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-28 18:56:03 IP:61.224.xxx.xxx 未訂閱
剛剛那個問題,如果你的form不是動態產生的話, 就不用new了,可以直接Form2->ShowModal() 不然好像多此一舉,最後還要delete,    只要有include Form2的h檔就可以直接和Form2傳資料。    至於你說的英打練習,是個滿不錯的點子, 希望日後你寫出來,如果沒有商業利益關係話, 也請你能和本站其他程式愛好者分享哦~ > 國泰平安 發表人 -
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-28 19:05:32 IP:211.22.xxx.xxx 未訂閱
如果可以的話,你把程式碼貼上來好了,讓大家幫你看看, 因為如果是照一般這樣, 加入一個Form2,然後在Form1的程式中#include "Unit2.h" (Form2的h檔) 再來Form2->ShowModal(); 都不會出現你說的問題,我想可能是你有部份小細節沒處理好吧~ 國泰平安
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-28 20:12:39 IP:218.168.xxx.xxx 未訂閱
引言: 剛剛那個問題,如果你的form不是動態產生的話, 就不用new了,可以直接Form2->ShowModal() 不然好像多此一舉,最後還要delete, 只要有include Form2的h檔就可以直接和Form2傳資料。 至於你說的英打練習,是個滿不錯的點子, 希望日後你寫出來,如果沒有商業利益關係話, 也請你能和本站其他程式愛好者分享哦~ > 國泰平安 發表人 - >< face="Verdana, Arial, Helvetica"> 真是謝謝 Gemi,我將"Form2 = new TForm2(NULL);"這行去掉就可以了… 對於 RichEdit 的操作方式,我也是從此版得知它的一些用法,只是還覺得不是很順手,我會再多玩一下… 我要做的打字練習著重在一個字母一個字母的比對,所以以字或以sentence為單位都不是很適合…目前可能先以拼湊的方式來達到我要的功能吧… 謝謝囉! YS.
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-28 20:35:15 IP:61.224.xxx.xxx 未訂閱
如果著重一個字一個字比對的話,可能會一個字錯, 後面全錯耶, 我以前也玩過一些英打練習的軟體, 好像都是以「行」為基準,再加上「單字」來做比對, 最後再加上一個英文字一個英文字來顯示錯在什麼地方,    小弟個人的想法,參考一下~ 國泰平安
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-28 21:50:05 IP:218.168.xxx.xxx 未訂閱
引言: 如果著重一個字一個字比對的話,可能會一個字錯, 後面全錯耶, 我以前也玩過一些英打練習的軟體, 好像都是以「行」為基準,再加上「單字」來做比對, 最後再加上一個英文字一個英文字來顯示錯在什麼地方, 小弟個人的想法,參考一下~ 國泰平安 < face="Verdana, Arial, Helvetica"> 我剛剛寫了如下的程式可符合我的需求: //RichEdit設為ReadOnly //nowPos:現在打字的位置 //str:RichEdit中目前選取的字串,其內容應為一字元 //normalColor, rightColor, errorColor:三種不同狀態的TColor //len:RichEdit中供練習的所有內容之長度 void __fastcall TFormF6::RichEdit1KeyPress(TObject *Sender, char &Key) { if (Key == 8){ // backspace if (nowPos>0) { RichEdit1->SelAttributes->Color = normalColor; nowPos--; RichEdit1->SelStart = nowPos; RichEdit1->SelLength = 1; } } else { char * str = RichEdit1->SelText.c_str(); if (str[0] == Key) { RichEdit1->SelAttributes->Color = rightColor; } else { RichEdit1->SelAttributes->Color = errorColor; } if (nowPos < len) { nowPos ; RichEdit1->SelStart = nowPos; RichEdit1->SelLength = 1; RichEdit1->SelAttributes->Color = normalColor; } } } 參考參考… YS.
yserics
一般會員


發表:10
回覆:9
積分:3
註冊:2003-08-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-28 22:01:24 IP:218.168.xxx.xxx 未訂閱
另外,還有個問題我就解不出來了,甚至將 RichEdit 所有 function 都看過一遍也找不到… 問題是:如果供練習的文章很長,我設了 vertical bar,練習中會選取目前應輸入字元,但我無法將 scroll bar 捲到讓所選取的字元顯示在可見區… 請問有誰知道如何讓程式去控制捲動 scroll bar 嗎?我試了 RichEdit1->ScrollBy()這個function,但一直試不出來… thanks a lot... YS.
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-28 22:08:05 IP:61.224.xxx.xxx 未訂閱
yserics兄~  建議你再另起一個討論的主題~ 就是針對你這個scrollbar的問題來討論~    我記得沒錯的話,這問題以前有人問過, 但好像是在出現ListView上,不管如何, 歡迎你發起另一個主題吧~ 國泰平安
系統時間:2024-05-15 19:19:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!