Lee Jenkins wrote:
Definitely related to TXMLDocument. Apparently, it is either a complete
mess and fraught with memory leaks or am misunderstanding how to use
it. Although, its not the first XML API I've used.
Once again, its back to Delphi I go :-(
Your trouble looks like issue 13605, which was fixed in the meantime.
One way out is to update the FPC; if that's not possible, you might want
to change your code to look like this:
lRegItem := lRegs.FirstChild;
while Assigned(lRegItem) do
begin
if lRegItem.nodeType = ELEMENT_NODE then
begin
{1} lClassName := TDOMElement(lRegItem).GetAttribute('classname');
lDataTable := ...
lObjType := ...
lObjReg := gMapppings.RegisterMapping(lClassName, lDataTable,
lObjType);
with lObjReg do
begin
lNode := lRegItem.FirstChild;
while Assigned(lNode) do
begin
if lNode.nodeType = ELEMENT_NODE tnen
begin
lpK := ...
lPropName := ...
lColName := ...
lValType := ...
//dtInteger, dtFloat, dtString, dtDateTime, dtBookean,
dtBinary)
lObjReg.RegisterProperty(lPropName, lColName,
TFlexDataType(Integer(gDataTypeStrToInt(lValType))),
lPK);
end; // if lNode.nodeType
lNode := lNode.NextSibling;
end; // while
end; // with lObjReg
end; // if lRegItem.nodeType
lRegItem := lRegItem.nextSibling;
end; // while
Note that the change marked as {1} is not related to the problem, it
just shows how to get the attribute value in a more short way.
Regards,
Sergei
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus