改錯 總結一下近幾天犯的錯誤

2022-09-12 04:54:09 字數 1457 閱讀 6215

最近寫點東西,發現果斷還是把老師教的都還回去了.......額,但是在我敲鍵盤的過程中,又汲取回來啦。

總結一下最近犯的錯誤吧,給自己提個醒,希望不要再犯了~

1.用控制項變數獲取輸入的文字,出錯。

因為函式挺長,所以好一會都沒發現問題在**。後來利用「注釋法」(個人覺得好實用的方法~~),找到了問題:

m_ededit.getwindowtext(str);

錯誤原因在於,window不止乙個,所以編譯鏈結是沒有問題的,但是執行獲取文字時,就會出現錯誤!

修改:getdlgitem(idc_***)->getwindowtext(str);  

首先根據id得到控制項,獲取該控制項上的文字。這樣就不會出錯啦!

這個問題的本質原因是沒有將變數與控制項關聯,這個有可能是編碼者自定義的控制項變數,例如:cedit m_ededit; 然後直接開始使用。

所以也可以在void cclayerdlg::dodataexchange(cdataexchange* pdx)中新增:ddx_control(pdx, idc_***, m_ededit);

2.字元間的轉換

這個應該檢討一下,之前只覺得是小細節,沒有太多的注意。真正使用的時候才發現原來裡面蠻有學問的,所以特意搜了一些資料,總結的挺詳細的。我以身試法的說說看,希望能夠盡量通俗。

(1)將wstring轉換為cstring

源**:

void c***view::oncurname()

{// todo: 在此新增命令處理程式**

c***doc* pdoc = getdocument();

std::wstring wstrname;

wstrname= pdoc->m_ap->getname();

cstring str;

str.format(_t("名稱:%s"),wstrname.c_str());//

利用c_str()函式進行轉換

afxmessagebox(str);

(2)_t的關鍵性作用

uint curid;

curid = pdoc->m_ap->getid();

cstring str;

str.format(_t("id號是:%u"),curid);//此處如果不加_t就會出錯

afxmessagebox(str);

檢視專案的屬性會發現:

uincode字符集進行解碼時,_t必須加上。如果是其他,則_t可有可無。(此處關於_t巨集會再學習,再解釋)

(3)將cstring轉換為wstring

m_wtrname = str.allocsysstring(); //同樣也是利用函式來實現

最近幾天寫儲存過程,總結一下零碎知識

一 關於儲存過程中的表 儲存過程中可以建立兩類表,臨時表和實體表,其建立方式如下 1 臨時表 create table table id int identity 1,1 列名1 int,列名2 varchar 100 create table table a 其中,乙個 表示是本地臨時表 區域性臨...

這幾天學習XSLT , 總結一下難點。

1 xslt 在表單中給input屬性value賦值 2 xslt 在js中使用 var name 20rel boook name 3 xslt 路徑問題 例如 xml文件中的值要在js中使用 xml文件 e coredumpout js中要使用 dt cdf input file 的name屬性...

總結一下這幾天操作符的學習心得

1.關於map的operator 原形為 val type operator const key type key a 返回val type說明,對於map中的val type,通過 下標 訪問,具有所有的write 和 read 許可權。b 原型後面沒有寫const,說明必須通過非const的物件...