with и OLE
Если в скрипте использовать with например XML
var
Xml: Variant;
begin
Xml := CreateOleObject('Microsoft.XmlDom');
Xml.appendChild(Xml.createElement('ROOT'));
with Xml.documentElement do
appendChild(Xml.createElement('CHILD'));
ShowMessage(Xml.xml);
Xml := nil;
ShowMessage('End');
end.
OLE - не убивается проверено на своих OLE обьектах
достаточно даже сделать такое :
var
Xml: Variant;
begin
Xml := CreateOleObject('Microsoft.XmlDom');
Xml.appendChild(Xml.createElement('ROOT'));
ShowMessage(Xml.xml);
Xml := nil;
ShowMessage('End');
end.
Как только используется ShowMessage опять не удаляется
var
Xml: Variant;
begin
Xml := CreateOleObject('Microsoft.XmlDom');
Xml.appendChild(Xml.createElement('ROOT'));
with Xml.documentElement do
appendChild(Xml.createElement('CHILD'));
ShowMessage(Xml.xml);
Xml := nil;
ShowMessage('End');
end.
OLE - не убивается проверено на своих OLE обьектах
достаточно даже сделать такое :
var
Xml: Variant;
begin
Xml := CreateOleObject('Microsoft.XmlDom');
Xml.appendChild(Xml.createElement('ROOT'));
ShowMessage(Xml.xml);
Xml := nil;
ShowMessage('End');
end.
Как только используется ShowMessage опять не удаляется
Комментарии
var
i, j: Integer;
Xml: Variant;
begin
Xml := CreateOleObject('Microsoft.XmlDom');
Xml.appendChild(Xml.createElement('ROOT'));
for i := 0 to 1000 do
begin
Xml.documentElement.appendChild(Xml.createElement(Format('CHILD_%d', )));
for j := 0 to 100 do
Xml.documentElement.childNodes.items.setAttribute(Format('ATTRIBUTE_%d', [j]), j);
end;
Xml.LoadXML('');
Xml := nil;
ShowMessage('End');
end.
Ни коем образом не освобождается оперативка