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

Canvas does not allow drawing 錯誤訊息 的解決方法

尚未結案
s0mnus
一般會員


發表:1
回覆:1
積分:0
註冊:2004-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-10 22:29:03 IP:218.168.xxx.xxx 未訂閱
我們在寫一個檔案傳輸的程式 而我們使用的是NMStrm 作傳輸的動作 我們看過之前有關Canvas does not allow drawing錯誤訊息的文章 但是還是不清楚解決的方法    我們發現當我們在 下載按鈕中的 ClientSocket->Socket->SendText("D"+Dfilename) 這程式碼之前使用 Breakpoints時,以手動的方式讓他一行一行執行 檔案將會成功下載,也不會出現 Canvas does not allow drawing 這個錯誤 但是在這一行前後加上 Sleep ,讓他暫緩執行速度還是會出現錯誤 不知道有沒有什麼方法,可以解決這樣的問題    以下是我們簡短的程式碼: //下載按鈕 void __fastcall TForm1::DLbuttonClick(TObject *Sender) {         int i ;         for(i = 0; i<=ListBox->Items->Count-1; i++)         {                 if(ListBox->Selected[i])                 {                    Dfilename = ListBox->Items->Strings[i];                    break;                 }         }         ClientSocket->Socket->SendText("D"+Dfilename); }    //Client端接收檔案 void __fastcall TForm1::NMStrmServ_DMSG(TComponent *Sender,       const AnsiString sFrom, TStream *strm) {         if (FileExists(localDir+Dfilename))                 DeleteFile(localDir+Dfilename);         TFileStream *MyFStream;         ShowMessage("D");         MyFStream = new TFileStream(localDir+Dfilename, fmCreate);         try         {                 MyFStream->CopyFrom(strm, strm->Size);         }         catch(...)         {         }         MyFStream->Free();         FileListBox->Update(); }    void __fastcall TForm1::ServerSocketClientRead(TObject *Sender,       TCustomWinSocket *Socket) {     //取得Client端所傳送的 filename     getFileName_C = Socket->ReceiveText();          //-------解析收到的資料以做出回應--------     if(getFileName_C.SubString(1,1)=="D")           //The request of client apply for file     {         int i;         NMStrmServ->Disconnect();         getFileName_C.Delete(1,1);         for(i = 0; i<= FileListBoxS->Items->Count-1; i++)         {                 FileListBoxS->Selected[i] = true;                 if(getFileName_C ==  ExtractFileName(FileListBoxS->FileName))                 {                         TFileStream *MyFStream;                         MyFStream = new TFileStream(FileListBoxS->FileName, fmOpenRead);                         try                         {                                 NMStrm_D->Host = Socket->RemoteAddress;                                 NMStrm_D->PostIt(MyFStream);                         }                         catch(...)                         {                         }                         MyFStream->Free();                         FileListBoxS->Selected[i] = false;                         break;                 }                 FileListBoxS->Selected[i] = false;         }     } }
s0mnus
一般會員


發表:1
回覆:1
積分:0
註冊:2004-10-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-12 00:05:42 IP:218.160.xxx.xxx 未訂閱
問題已解決。
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-18 17:32:21 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-20 14:57:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!