這很混亂。我的程序工作可靠。然後,我匆匆做了一些改變,他們沒有工作,重新纏繞他們,去顯示我的程序,它不再有效。我的錯誤是每10分鐘不做新的複印件。然而事情是,該程序崩潰在一個沒有道理的地方。QDomElement.setAttribute崩潰程序
QDomElement Expense::toNode()
{
QDomElement e=Entry::toNode(); //Entry is parent of Expense
QString temp;
//std::string getThis=e.nodeName().toStdString();
temp=QString::fromStdString(Category); //Category is string field
//e.hasAttribute("category"); //this works
//e.setAttribute("ha","hi"); //this crashes program
//e.setAttribute("category",temp); //this also crashes program
return e;
}
我想,也許在我匆忙修改了一些圖書館,但如果我創建一個新的QDomElement
,並編輯它的屬性,存在一點問題都沒有。然後我想,也許我的節點根本不是節點,但我可以使用許多其他功能(例如e.hasAttribute
)。我們可以設置的屬性數量是否有限制?什麼可能是錯誤?
在情況下,它可以幫助:
QDomElement Entry::toNode()
{
QDomDocument d("EzXpns");
QDomElement e=d.createElement("entry");
QString temp;
temp=QString::fromStdString(Name);
e.setAttribute("name",temp);
temp=QString::fromStdString(to_string(static_cast<long double>(Amount)));
e.setAttribute("amount",temp);
temp=QString::fromStdString(to_string(static_cast<long long>(Date[0])));
e.setAttribute("dateyear",temp);
temp=QString::fromStdString(to_string(static_cast<long long>(Date[1])));
e.setAttribute("datemonth",temp);
temp=QString::fromStdString(to_string(static_cast<long long>(Date[2])));
e.setAttribute("dateday",temp);
temp=QString::fromStdString(Comment);
e.setAttribute("comment",temp);
return e;
}
編輯:我應該規定,如果我嘗試調試這是消息我得到:
TestBuild.exe引發了斷點
然後
TestBuild.exe中0x77d415de未處理的異常:0xC0000005:訪問衝突讀取位置0x13fb8ff8。
然後
0x77d3016e在TestBuild.exe:00000000:操作成功完成。
EDIT2:示例XML
<!DOCTYPE data>
<EzXpns>
<account>
<login name="b" password="1"/>
<expHis>
<entry comment="9" dateday="1" name="k" dateyear="0" amount="9" datemonth="1"/>
<entry comment="9" dateday="1" name="b" dateyear="0" amount="9" datemonth="1"/>
<entry comment="9" dateday="1" name="b" dateyear="0" amount="9" datemonth="1"/>
<entry comment="9" dateday="1" name="b" dateyear="0" amount="9" datemonth="1"/>
<entry comment="9" dateday="1" name="b" dateyear="0" amount="9" datemonth="1"/>
</expHis>
<incomeHis/>
</account>
</EzXpns>