Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.306 Beiträge
 
Delphi 12 Athens
 
#20

Re: (unbekannte) XML Dateien zusammenführen bzw. mergen

  Alt 24. Sep 2009, 11:25
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat