AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML-Dateien lesen mit TXMLDocument

XML-Dateien lesen mit TXMLDocument

Ein Thema von Burgwächter · begonnen am 13. Mär 2009 · letzter Beitrag vom 16. Mär 2009
Antwort Antwort
Burgwächter

Registriert seit: 13. Mär 2009
6 Beiträge
 
Delphi 2006 Professional
 
#1

XML-Dateien lesen mit TXMLDocument

  Alt 13. Mär 2009, 18:59
Hallo,
nachdem ich schon sehr viele meiner Probleme mit Hilfe des Forums lösen konnte, erst einmal Danke an alle die hier Ihr Wissen teilen.
Heute habe ich jedoch ein Prob, dass ich nicht finden kann.

Ich möchte eine XML-Datei einlesen, mein Code funkt wenn ich Ihn in einem einzelnen Projekt starte.
Wenn Ihn jedoch in einem Thread starte bekomme ich folgende Exception:

...EInvalidPointer mit Meldung 'Ungültige Zeigeroperation'.

Wenn ich die Maus über die beTreffende Zeile im Debugmodus halte bekomme ich rivilegierte Instruktion bei 0125D204

Delphi-Quellcode:
VAR
  Files : TStrings;
  aFile : String;
  XML : TXMLDocument;
  RootNode : IXMLNode;
  Node : IXMLNode;
.....
    if not DoNothing then Begin
      XML := TXMLDocument.Create('c:\xml\out\bb3.xml');
      for i := 0 to Files.Count -1 do begin
        //XML.LoadFromFile(a);
        xml.Active:=True;
        RootNode := xml.DocumentElement;
....
auch mit folgender Version bekomme ich den selben Fehler.
Delphi-Quellcode:
.....
    aFile:='C:\xml\out\bb3.xml';
    if not DoNothing then Begin
      XML := TXMLDocument.Create(nil);
      for i := 0 to Files.Count -1 do begin
        XML.LoadFromFile(aFile);
        xml.Active:=True;
        RootNode := xml.DocumentElement;
....
Statt xml.DocumentElement habe ich auch schon xml.childnodes['Params'] getestet.

--> übrigens das Schreiben eine XML-Datei klappt auch im Thread.

Gruß
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: XML-Dateien lesen mit TXMLDocument

  Alt 13. Mär 2009, 19:22
Führe vorher mal MSDN-Library durchsuchenCoInitialize im entsprechenden Thread aus und initialisiere sozusagen erstmal die COM-Objekte

Hier im Forum suchenTXMLDocument CoInitialize
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Burgwächter

Registriert seit: 13. Mär 2009
6 Beiträge
 
Delphi 2006 Professional
 
#3

Re: XML-Dateien lesen mit TXMLDocument

  Alt 13. Mär 2009, 22:24
Hi,

ein
CoInitialize(nil);

ist schon in der EXECUTE procedure enthalten, ist es nötig in jeder weiteren procedure ein CoInitialize zu starten?

Leider bekomme ich auch beim Test mit CoInitialize in dieser procedure den selben Fehler wie zuvor.

Gruß
Ralf
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: XML-Dateien lesen mit TXMLDocument

  Alt 14. Mär 2009, 00:07
Ersetze mal alle Klassen durch Interfaces. Alle Probleme mit TXMLDocument rührten bei mir bisher daher, dass ihc Klassen und Interfaces vermischt habe. Warum das nicht funktioniert steht auf einem anderen Blatt...

Edit: Ich sehe gerade es geht um Threads... dann liegt es wahrscheinlich an etwas anderem, wenn es sonst funktioniert, sorry.
  Mit Zitat antworten Zitat
Burgwächter

Registriert seit: 13. Mär 2009
6 Beiträge
 
Delphi 2006 Professional
 
#5

Re: XML-Dateien lesen mit TXMLDocument

  Alt 14. Mär 2009, 10:48
Ja, ich denke auch es muss etwas mit Threading zu tun haben, denn wie gesagt, wenn ich die procedure in einem Test in einem eigenen vcl setze klappt es. Was mir zu denken gibt ist : Privilegierte Instruktion bei 0125D204 . Leider bin ich Anfänger (3Monate) und komme einfach nicht weiter.
Hat noch jem. eine Idee? oder sollte ich auf eine andere Möglichkeit zum lesen von XML umsteigen?
Ich fand nur TXMLDocument sieht recht einfach aus.
Gruß
Ralf
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.839 Beiträge
 
Delphi 2009 Professional
 
#6

Re: XML-Dateien lesen mit TXMLDocument

  Alt 14. Mär 2009, 13:35
Zitat von Burgwächter:
Hat noch jem. eine Idee? oder sollte ich auf eine andere Möglichkeit zum lesen von XML umsteigen?
Auf jeden Fall das hier nicht vergessen:

XML : IXMLDocument; (statt TXMLDocument), böse Fehler und Abstürze sind sonst möglich.

Und für jeden Thread einen eigene Instanz von IXMLDocument verwenden.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Burgwächter

Registriert seit: 13. Mär 2009
6 Beiträge
 
Delphi 2006 Professional
 
#7

Re: XML-Dateien lesen mit TXMLDocument

  Alt 16. Mär 2009, 09:49
Hallo,

Hm, dass mit IXMLDOKUMENT habe ich versucht, dann bekomme ich eine Zugriffsverletzung, beim laden der XML-Datei.

Diesmal habe ich das Problem auch wenn ich mir in einer TEST.pas einen Klickbutton mit dem Laden versehe, und nicht nur im Thread. Scheinbar habe ich die Tomaten vom Freitag immer noch auf den Augen. grrr was mache ich jetzt schon wieder falsch...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR
  lXML : iXMLDocument;
  Node : IXMLNode;
  RootNode : IXMLNode;

begin
    lxml.LoadFromFile('c:\XML\out\Test.xml');
    lxml.Active:=true;
// RootNode:= lXML.DocumentElement;
    RootNode := lXML.ChildNodes['Params'];
    Node:= Rootnode.ChildNodes['UserInfos'];
    showmessage(Node.ChildNodes['Login'].Text);
    lxml:=nil;
end;
Sollte man grundsätzlich auf TXMLDocument verzichten?

Gruß
Ralf
  Mit Zitat antworten Zitat
Burgwächter

Registriert seit: 13. Mär 2009
6 Beiträge
 
Delphi 2006 Professional
 
#8

Re: XML-Dateien lesen mit TXMLDocument

  Alt 16. Mär 2009, 10:09


okok manchmal hilft einfach mal 100 durch 7 teilen.... natürlich von Hand, bis auf mind. 20 Stellen nach dem Komma...
egal wie, Hauptsache man denkt mal an was anderes!

lXML := TXMLDocument.Create(nil) as iXMLDocument; Danke an ALLE die mir geholfen haben.

--> Aber, ist es erlaubt TXMLDocument mit nil aufzurufen?

Gruß
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: XML-Dateien lesen mit TXMLDocument

  Alt 16. Mär 2009, 10:43
Zitat von Burgwächter:
--> Aber, ist es erlaubt TXMLDocument mit nil aufzurufen?
Ja klar. Wenn es keinen Owner gibt. Das ist doch nur Comfort für dich beim Programmieren auf den du hier verzichtest (Den du aber auch nicht verwendest).
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

Re: XML-Dateien lesen mit TXMLDocument

  Alt 16. Mär 2009, 14:23
Zitat von Burgwächter:


okok manchmal hilft einfach mal 100 durch 7 teilen.... natürlich von Hand, bis auf mind. 20 Stellen nach dem Komma...
egal wie, Hauptsache man denkt mal an was anderes!

lXML := TXMLDocument.Create(nil) as iXMLDocument; Danke an ALLE die mir geholfen haben.

--> Aber, ist es erlaubt TXMLDocument mit nil aufzurufen?

Gruß
Ralf
 as iXMLDocument kannst du dir imo sparen.
  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 19:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf