一、編寫聊天室程式時遇到的問題:
debug assertion failed arccore.cpp line 478 錯誤的解決:
先通過以下方法定位:
首先如果你用的是vc6的話:
1。按f5執行你的程式
2。在出錯時,選擇「重試」
(3。按alt+7調出「呼叫棧」視窗
4。雙擊從上往下的最近乙個自己定義的函式,)
一般系統會自動把該函式所在的檔案顯示出來,此時程式就暫停在游標處。一般來說錯誤就出在這附近。
你可以通過檢視變數的值來確認。
我所遇到的錯誤為:
析構csessionsocket物件時,先把csocketfile指標刪除了,然後才銷毀carchive物件,語句如下:
csessionsocket::~csessionsocket()
此時就會彈出debug assertion failed arccore.cpp錯誤,原因是執行archive中的flush()函式時檔案指
針已經為空了。所以就彈出了如上錯誤。解決辦法,將如上指標銷毀的順序改變一下,先銷毀carchive對
象指標,再銷毀檔案指標。即:
csessionsocket::~csessionsocket()
二、有關updatedata()函式的用法總結:
updatedata(true);
把控制項的值傳給對應的變數。
updatedata(false);
把變數的值傳遞給控制項。
下文**他人部落格:
updatedata()用法 收藏
一、總結updatedata()函式
updatedata(true);//用於將螢幕上控制項中的資料交換到變數中。
updatedata(false);//用於將資料在螢幕中對應控制項中顯示出來。
當你使用了classwizard建立了控制項和變數之間的聯絡後:當你修改了變數的值,而希望對話方塊控
件更新顯示,就應該在修改變數後呼叫updatedata(false);如果你希望知道使用者在對話方塊中到底輸入了
什麼,就應該在訪問變數前呼叫updatedata(true)。
二、關於編輯框的賦值和取值
1、建乙個 控制型的變數,如m_edit1,用cwnd的setwindowtext() 和getwindowtext()來賦值和取值。
m_edit1.setwindowtext("hello");
或者getdlgitem(idc_edit1)->setwindowtext(str);
2、建立乙個控制型的變數,如m_edit1,用setdlgitemtext()和getdlgitemtext()來賦值和取值
cstring str="hello":
m_edit1.setdlgitemtext(idc_edit1,str);
2、直接建乙個 數值形的變數 如m_stredit; 用 updatedata()來控制得到變數,還是更新變數
//取值
updatedata(true);
cstring buf = m_edit1;
//賦值
m_edit1="ok!";
updatedata(false);
debug的一點點小經驗
1 對於大型介面程式卡死的問題,首先根據卡死時的操作按鈕,找到對應的函式,在函式裡就開始打斷點 2 程式指標在 跑飛,就說明問題出在該位置。重點關注迴圈 函式呼叫語句 3 在適當的距離上,設定多個斷點,截斷一整個流程,將bug確定在某個範圍裡 4 找到某個範圍,在這個範圍裡利用 單步執行,進行排查 ...
關於android螢幕適配的一點小經驗
android開發裡最擾人的活有一塊是螢幕適配吧,各種機型的試錯,才確定乙個布局,但是今天我不講布局的經驗,我講講美工或者設計給的一套切圖,應該放在哪個目錄下最合適。設計或者美工給了一套切圖,我們應該把它放在哪兒合適呢?畢竟有那麼多資料夾,按存放大小排列依次是ldpi,mdpi,hdpi,xhdpi...
mysql一點經驗
今天看了下mysql5的英文手冊,雖然只看了一點點,還是要分享一下其中比較實用的東西。為了方便大家學習,舉出下面給出一些例子。大家看著用就行了。特別是被很多程式設計師忽略的mysql變數,那可真是個好東西呀。1 時間操作 表名 table 字段 birth 格式1989 05 13 根據年紀計算歲數...