我现在的项目中用了XML,使用了TXMLDocument,结果发现我在Create了以后,Free完了内存不释放,后来就在定时器或循环中作了测试,结果发现内存飞快得增加,直到出现虚拟内存不足。代码如下:
procedure TForm1.Timer2Timer(Sender: TObject);
var
XMLDocument: TXMLDocument;
begin
CoInitialize(nil);
try
XMLDocument := TXMLDocument.Create(self);
XMLDocument.XML.Clear;
XMLDocument.Active := True;
XmlDocument.XML.Text:=XMLDocument1.XML.Text;
XMLDocument.Active := True;
finally
XMLDocument.Free;
CoUnInitialize;
end;
end;发现不成后,就改用自动创建在窗体上放一个,所有代码都去掉了,只置一下true,false还是不行,内存依然在涨,到不足,快急死了,大家帮我想想是怎么回事,应该不会是控件本身的缺陷吧procedure TForm1.Button1Click(Sender: TObject);
begin
while 1<2 do
begin
XMLDocument1.Active:=true;
XMLDocument1.Active:=false;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
XMLDocument: TXMLDocument;
begin
CoInitialize(nil);
try
XMLDocument := TXMLDocument.Create(self);
XMLDocument.XML.Clear;
XMLDocument.Active := True;
XmlDocument.XML.Text:=XMLDocument1.XML.Text;
XMLDocument.Active := True;
finally
XMLDocument.Free;
CoUnInitialize;
end;
end;发现不成后,就改用自动创建在窗体上放一个,所有代码都去掉了,只置一下true,false还是不行,内存依然在涨,到不足,快急死了,大家帮我想想是怎么回事,应该不会是控件本身的缺陷吧procedure TForm1.Button1Click(Sender: TObject);
begin
while 1<2 do
begin
XMLDocument1.Active:=true;
XMLDocument1.Active:=false;
end;
end;
自带的是不是不太好用
我也是项目需要第一次使用,MSXML没有资料,能给我一个例子吗
其实TXMLDocument也是用了MSXML,procedure TForm1.Timer2Timer(Sender: TObject);
var
XMLDocument: IXMLDocument;
begin
CoInitialize(nil);
try
XMLDocument := TXMLDocument.Create(nil);
~~~~你那程序关键错误就是这儿,这个必须是NIL。
XMLDocument.XML.Clear;
XMLDocument.Active := True;
XmlDocument.XML.Text:=XMLDocument1.XML.Text;
XMLDocument.Active := True;
....
finally
XMLDocument:=nil;//这一句不要也可。
CoUnInitialize;
end;
end;当然,在没有安装MSXMLDOM4情况下,
TXMLDOCUMENT也有些小小的问题,不过可以轻松解决的。
但不会影响到你的程序。
我刚刚试过了帮我测一下OK?
是不是因为我没有安装MSXMLDOM4
但用TXMLDocument.Create(nil)是将导致问题:
修改XMLDocument.encoding等三个属性时会报错,
我是这样,放一个datamodule:
XMLDocument:= TXMLDocument.Create(dm);
FreeAndNil(XMLDocument);内存不断增长的问题装了msxml4以后就不会了,或者用
halfdream(哈欠) 的办法,很好:http://expert.csdn.net/Expert/topic/2841/2841134.xml?temp=.8972284现在烦恼一扫而空!
listener96(test) 多谢
halfdream(哈欠)真是厉害