AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML documentElement mal da und mal nicht..,,

documentElement mal da und mal nicht..,,

Ein Thema von ASKtec · begonnen am 15. Dez 2010 · letzter Beitrag vom 20. Dez 2010
Antwort Antwort
ASKtec

Registriert seit: 19. Okt 2007
36 Beiträge
 
#1

documentElement mal da und mal nicht..,,

  Alt 15. Dez 2010, 01:25
Hallo zusammen,

ich habe ein Problem mit XML und dem documentElement, also dem Root-Element. Meine Anwendung funktioniert auf manchen Rechnern und auf manchen nicht. Da wo sie nicht funktioniert kommt es zu einer Zugriffsverletzung beim Zugriff auf documentElement und ich kann mir nicht erklären warum.

Hier mal ein Auszug aus dem Quellcode:
Code:
procedure TForm1.ExportXML;
var
  xmld : IXMLDOMDocument2;
  root, node, newPaket, subnode, subsubnode  : IXMLDomNode;
begin
   xmld := CoDomDocument40.Create;

  if(xmld <> nil) then
  try
    xmld.setProperty('NewParser', true);
    xmld.setProperty('SelectionLanguage', 'XPath');
    xmld.setProperty('SelectionNamespaces',strSelNS);
    xmld.async := true;
    xmld.validateOnParse := false;

    // XML-Grundcode
    xmld.loadXML('<?xml version="1.0" encoding="windows-1252"?>' + #13#10
      + '<Rootnode ' + strNamespace + '/>');                         // <<< hier sollte doch der Root Eintrage erstellt werden

....
.... hier werden die Nodes zusammengebaut
....

   xmld.documentElement.appendChild(newNode);  // <<< hier kommt es zur Exception weil documentElement nil ist


   xmld.save(exportdatei);

  finally
    xmld := nil;
  end;
end;
Hat jemand eine Idee woran es liegen kann, dass es auf manchen Rechnern ohne Problem läuft und auf andern nicht? Es hängt nicht vom Betriebsystem ab und auf allen Rechnern ist MSXML 4 installiert (mind SP2). Ich bin gerade ratlos...

Vielen Dank fürs lesen und für die evtl. Hilfe

VG
ASKtec
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.708 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: documentElement mal da und mal nicht..,,

  Alt 20. Dez 2010, 09:04
Delphi-Quellcode:
xmld.async := true;
xmld.validateOnParse := false;
Du sagst arbeite Assynchron (also nicht, warte bis du fertig bist, bevor es weitergeht) und "ignoriere" Fehler.

Und dann beschwerst du dich, wenn eventuelle Fehler nicht bemängelt werden, oder wenn etwas noch nicht fertig ist, bzw. noch nicht existiert, sobald du darauf zugreifen willst.



Code:
....
.... hier werden die Nodes zusammengebaut
....
Was machst du denn da so alles?
(nicht das da auch noch Fehler drin sind)

PS: Wir haben hier auch ein [DELPHI]-Tag, siehe der rote Helm-Button, für lesbarere Delphi-Codes.

PSS: CoDomDocument40.Create sollte eine Exception werfen, wenn nix erstellt werden konnte ... also die Prüfung auf NIL kann entfallen.
Auch das try-finally + :=nil am Ende könnte man weglassen, da dieses Delphi automatisch verbaut, wenn man hier eine lokale Interface-Variable nutzt (so wie du es ja machst) ... also das try steckt im BEGIN der Funktion und finally + :=nil versteckt sich im END; der Funktion.

(aber falsch ist es nicht, falls du es unbedingt mache willst)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (20. Dez 2010 um 09:11 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf