SPComm的動態產生的問題 |
尚未結案
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
//.h TComm *Comm1; //.cpp void __fastcall TForm1::Comm1ReceiveData(TObject *Sender, Pointer Buffer,WORD BufferLength) { Edit1->Text=(char *) Buffer; } void __fastcall TForm1::Button1Click(TObject *Sender) { Comm1=new TComm(Application); Comm1->BaudRate=9600; Comm1->ByteSize=_7; Comm1->CommName="COM1"; Comm1->ParityCheck=true; Comm1->Parity=Even; Comm1->StopBits=_1; Comm1->OnReceiveData=Comm1ReceiveData; Comm1->StartComm(); } void __fastcall TForm1::Button2Click(TObject *Sender) { const char STX='\x02'; const char ETX='\x03'; const AnsiString head=STX; const AnsiString tail=ETX; AnsiString Temp=head "014EABCDEFGB8" tail; Comm1->WriteCommData(Temp.c_str(),strlen(Temp.c_str())); if(Comm1->SendDataEmpty==false) ShowMessage("傳送成功"); else ShowMessage("等待傳送"); } void __fastcall TForm1::FormDestroy(TObject *Sender) { Comm1->StopComm(); delete Comm1; }收發都可以正常動作,但是在delete Comm1的時候會出現Invalid pointer operation這是為何?那應該如何刪除該元件嗎? |
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
|
ralph
初階會員 發表:41 回覆:82 積分:29 註冊:2003-02-04 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
引言: 補充一點,如果連Button1或Button2都沒有按就離開, 而且把delete那行註解掉,也同樣會出現Invalid pointer operation1. 如果連Button1或Button2都沒有按,也就是你沒有 Comm1=new TComm(Application); 就執行delete Comm1;程式一定錯. 2. 你可試著把 new 和 delete 同時寫在 Button1Click 裡,如此按下Button1就會動態產生SPComm,並且delete,假如會錯,這裡就會出錯了. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |