Zitat:
/<<<< operator not applicable to this operand
da hatte ich einfach nur etwas zuviel gelöscht
Delphi-Quellcode:
while Assigned(NodeAnother) do
begin
NodeNext := NodeAnother.NextSibling;
i := 0;
while (i < NodeBase.childNodes.length)
and (not Assigned(NodeBase.childNodes[i].firstChild)
or not Assigned(NodeAnother.firstChild)
or (NodeBase.childNodes[i].firstChild.text
<> NodeAnother.firstChild.text)) do
Inc(i);
if i < NodeBase.childNodes.length then
begin
for i2 := 0 to NodeBase.childNodes[i].childNodes.length - 1 do
NodeBase.childNodes[i].removeChild(NodeBase.childNodes[i].firstChild);
for i2 := 0 to NodeAnother.childNodes.length - 1 do
NodeBase.childNodes[i].appendChild(NodeAnother.firstChild);
end else
NodeBase.appendChild(NodeAnother);
NodeAnother := NodeNext;
end;
Zitat:
<<<< wo kommt i2 rein?
garnicht?
es wird einfach immer nur i2-mal der erste Node gelöscht oder übertragen
Delphi-Quellcode:
begin
for i2 := 0 to NodeBase.childNodes[i].childNodes.length - 1 do
NodeBase.childNodes[i].removeChild(NodeBase.childNodes[i].firstChild);
for i2 := 0 to NodeAnother.childNodes.length - 1 do
NodeBase.childNodes[i].appendChild(NodeAnother.firstChild);
end else
oder
Delphi-Quellcode:
begin
for i2 := 0 to NodeBase.childNodes[i].childNodes.length - 1 do
NodeBase.childNodes[i].removeChild(NodeBase.childNodes[i].childNodes[0]);
for i2 := 0 to NodeAnother.childNodes.length - 1 do
NodeBase.childNodes[i].appendChild(NodeAnother.childNodes[0]);
end else
OK, man kann, zumindestens beim Löschen, den Index i2 verwenden,
Delphi-Quellcode:
for i2 := NodeBase.childNodes[i].childNodes.length - 1 downto 0 do
NodeBase.childNodes[i].removeChild(NodeBase.childNodes[i].childNodes[i2]);
muß man aber nicht, da eh alles gelöscht werden soll.
Und ob man da von hinten oder vorne anfängt ist hier relativ egal.