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

SPComm的動態產生的問題

尚未結案
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-05 23:25:54 IP:61.229.xxx.xxx 未訂閱
//.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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-06 14:36:06 IP:61.229.xxx.xxx 未訂閱
補充一點,如果連Button1或Button2都沒有按就離開, 而且把delete那行註解掉,也同樣會出現Invalid pointer operation
ralph
初階會員


發表:41
回覆:82
積分:29
註冊:2003-02-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-18 22:55:59 IP:66.171.xxx.xxx 未訂閱
If the "TComm" is VCl, you won't do "delete comm1" when the form is close becuase it will be destory.
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-19 17:21:32 IP:218.160.xxx.xxx 未訂閱
Comm1=new TComm(Application); 把這一行拿到FormCreate(TObject *Sender)裡面看看.
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-24 21:55:51 IP:220.138.xxx.xxx 未訂閱
謝謝brook及ralph 現在變成不要delete就好了 真的可以不用delete 不會造成記憶體的漏失嗎?
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-26 15:15:51 IP:218.160.xxx.xxx 未訂閱
引言: 補充一點,如果連Button1或Button2都沒有按就離開, 而且把delete那行註解掉,也同樣會出現Invalid pointer operation
1. 如果連Button1或Button2都沒有按,也就是你沒有 Comm1=new TComm(Application); 就執行delete Comm1;程式一定錯. 2. 你可試著把 new 和 delete 同時寫在 Button1Click 裡,如此按下Button1就會動態產生SPComm,並且delete,假如會錯,這裡就會出錯了.
系統時間:2024-05-05 14:39:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!