AGB  ·  Datenschutz  ·  Impressum  







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

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
38 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
44.062 Beiträge
 
Delphi 12 Athens
 
#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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Dez 2010 um 09:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz