最新评论
Re:IcePatch2+IceGrid部署的解决方案 热爱生活qq1510914311 2011-12-11 15:12
谢谢!
我用你同样的代码,在进行了添加元素后,再调用更新元素时,在Load处就失败了,加载不成功!不知道是哪里的问题?
[code=cpp]
void CXml_MarkupDlg::OnBtnFind()
{
CMarkup xml;
if(!xml.Load("D:\\Desktop\\dd\\a.xml"))
{
MessageBox("加载文件失败,请确认文件是否存在");
return;
}
CString sResult;
while(xml.FindChildElem("ITEM"))
{
xml.IntoElem(); // 进入当前结点
xml.FindChildElem("SN");
CString sSN = xml.GetChildData();
xml.FindChildElem("NAME");
CString sName = xml.GetChildData();
xml.FindChildElem("QTY");
int nQty = atoi(xml.GetChildData());
xml.OutOfElem(); // 退出当前结点
sResult.Format("%s, %s, %d", sSN, sName, nQty);
MessageBox(sResult);
}
}
void CXml_MarkupDlg::OnBtnAdd()
{
CString sFileName = "D:\\Desktop\\dd\\a.xml";
CMarkup xml;
if(!xml.Load(sFileName))
{
MessageBox("加载文件失败,请确认文件是否存在");
return;
}
xml.AddElem("ORDER");
xml.IntoElem();
xml.AddElem("ITEM");
xml.IntoElem();
xml.AddElem("SN", "4238764-A");
xml.AddElem("NAME", "bearing");
xml.AddElem("QTY", "15");
xml.OutOfElem();
xml.AddElem("SHIPMENT");
xml.IntoElem();
xml.AddElem("POC");
xml.SetAttrib("type", "non-emergenty");
xml.IntoElem();
xml.AddElem("NAME", "John Smith");
xml.AddElem("TEL", "555-1234");
xml.Save(sFileName);
}
void CXml_MarkupDlg::OnBtnUpdate()
{
CString sFileName = "D:\\Desktop\\dd\\a.xml";
CMarkup xml;
if(!xml.Load(sFileName))
{
MessageBox("加载文件失败,请确认文件是否存在");
return;
}
if(xml.FindChildElem("SHIPMENT"))
{
xml.IntoElem();
if(xml.FindChildElem("POC"))
{
xml.IntoElem();
CString sType = xml.GetAttrib("type");
MessageBox(sType);
xml.SetAttrib("type", "change");
CString sUserID = xml.GetData();
MessageBox(sUserID);
if(xml.FindChildElem("TEL"))
{
xml.IntoElem();
xml.SetData("123456789");
xml.Save(sFileName);
}
}
}
}
[/code]
最初的xml文件内容是:
<ORDER>
<ITEM>
<SN>132487A-J</SN>
<NAME>crank casing</NAME>
<QTY>1</QTY>
</ITEM>
<ITEM>
<SN>132487B-K</SN>
<NAME>crank cafe</NAME>
<QTY>2</QTY>
</ITEM>
</ORDER>
还想问一下,如果
#pragma pack(push) //保存对齐状态
#pragma pack(5) //设定为5字节对齐
struct test {
char m1;
double m4;
int m3;
};
#pragma pack(pop)//恢复对齐状态
test t ={1, 2, 3};
设置成5字节对齐的时候,此时我查看t的内存,t中double的成员变量为什么在内存中看不出来,还有对齐方式也看不出来是5的倍数,不知道编译器是怎么优化的。
Memory1中是这么显示的:
01 cc cc cc cc cc cc cc [b]00 00 00 00 00 00 14 40[/b] 03 00 00 00 cc cc cc cc
我只看到1和3,2不知道是怎么搞的。
楼主能不能解释一下。
MAIL: liuling-1985@163.com
Re:发布9个腾讯微博的邀请码 飞天名猪 2010-06-07 10:11
再发8个
http://t.qq.com/invite/11e89cddb39677fb3bc7
http://t.qq.com/invite/e903561d3bc7d2ea78eb
http://t.qq.com/invite/e1d2e154b9103b586933
http://t.qq.com/invite/33bfdbabd0c43c0a966b
http://t.qq.com/invite/a78e8ea57bf1109052e3
http://t.qq.com/invite/69100d6225d9d5b37313
http://t.qq.com/invite/2d77639a0b120fca3481
http://t.qq.com/invite/699c0f40a756c97a1ddb
http://t.qq.com/invite/e9be4941253646ca4fc3
Re:发布9个腾讯微博的邀请码 kuafoo 2010-06-01 09:22
http://t.qq.com/invite/daa4dc69ef5a295d5d85
http://t.qq.com/invite/2575fe632a21fd92cedf
http://t.qq.com/invite/4c96c999d0b16cf4d031
Re:发布9个腾讯微博的邀请码 Q 2010-06-01 09:21
还有吗?
Re:发布9个腾讯微博的邀请码 寒萧 2010-06-01 09:00
谢谢,用了一个
Re:发布9个腾讯微博的邀请码 寒萧 2010-06-01 08:56
失效了!
Re:发布9个腾讯微博的邀请码 Melc 2010-06-01 08:56
我在发7个:
http://t.qq.com/invite/a8407a517bf3ba647bfb
http://t.qq.com/invite/d74699b329698326116f
http://t.qq.com/invite/8bff59d8572f4af0d19b
http://t.qq.com/invite/5409f3bcb92259c62699
http://t.qq.com/invite/0a0cb225764691ada313
http://t.qq.com/invite/6b299b7c125f285643df
http://t.qq.com/invite/8807af264e243a8601c9
Re:发布9个腾讯微博的邀请码 被偷De贼 2010-06-01 08:52
占用一个名额啦~~
Re:发布9个腾讯微博的邀请码 小蠢兔 2010-06-01 08:50
怎么都失效了
结构体按照 8 - 4 - 2 - 1 从大到小的方式来写。一般不会浪费多少内存。(当然一个double 一个 char 就浪费挺多的)
还有一个问题要问楼主,改变默认的对齐方式,会不会影响程序的性能。
Re:请教如何做一个可编辑下拉框? 唠唠 2009-07-07 14:33
我做了一个这样的,有兴趣可以联系我:dahuaxiyou601@163.com,我们共同学习
n可以是16,但是n是16的时候结果跟8一样,因为大于里面最大成员的字节数,按默认规则处理.
n 只能为1,2,4,8,16
哥们你写的太复杂了
#pragama pack(n) 的设定范围是 1<=n<=最大成员所占字节数。
所以此例:
#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4字节对齐
struct test {
char m1;
double m4;
int m3;
};
#pragma pack(pop)//恢复对齐状态
你的n设成多少,最大只能是8。