Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Beim XML laden bleibt die Anwendung einfach hängen (https://www.delphipraxis.net/98365-beim-xml-laden-bleibt-die-anwendung-einfach-haengen.html)

gsh 26. Aug 2007 00:50


Beim XML laden bleibt die Anwendung einfach hängen
 
Hi Leute

Ich komm hier einfach nicht weiter.
Ich versuche Daten aus einer XML Datei zu lesen aber irgendwie geht gar nichts und die Anwendung bleibt einfach hängen.
Delphi-Quellcode:
function XML_Load(XMLFilename : String; VST : TVirtualStringTree) : Boolean;
var
  XMLDocument : TXMLDocument;
begin
  Result := true;
  try
    XMLDocument := TXMLDocument.Create(nil);
    try
      XMLDocument.NodeIndentStr := '<2 Leerzeichen>';
      XMLDocument.FileName := XMLFilename;
      if (not(FileExists(XMLFilename))) or (XMLDocument.IsEmptyDoc) then
      begin
        XMLDocument.LoadFromXML('<?xml version="1.0"?><'+cXMLRootNodeName+'></'+cXMLRootNodeName+'>');
        XMLDocument.SaveToFile;
      end;
      try
        XMLDocument.Active := true;
      except
        ShowMessage('XML Fehler: Die Datei "'+XMLFilename+'" ist fehlerhaft.');
        Result := false;
      end;
      //Des sind die verschiedenen Möglichkeiten die ich getestet hab
1.   ShowMessage(XMLDocument.DocumentElement.NodeName); //Hier bleibt er einfach stehen
2.   ShowMessage(XMLDocument.Node.ChildNodes.Last.NodeName);//hier funktionierts ABER bei dem bleibt er bei FreeAndNil(XMLDocument); dann hängen
3.   ShowMessage(XMLDocument.ChildNodes.Last.NodeName);//hier funktionierts auch bleibt aber wieder hier FreeAndNil(XMLDocument); hängen
    finally
      FreeAndNil(XMLDocument);
    end;
  except
    ShowMessage('XML Fehler: Fehler beim Laden des XML Documents');
    Result := false;
  end;
end;
Und hängen bleiben versteh ich: Er geht in die Codezeile hinein (Debugger) geht aber nie mehr raus und die Anwendung ist absolut eingefroren

Ich will den Root Knoten bekommen als Variable heraus bekommen ... nur so nebenbei

semo 26. Aug 2007 00:58

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
könntest du mal die xml datei anhängen?
oder stellt das ein problem dar?
ich hab da mal vor ner weile ein kleines xml check tool geschrieben.
kann ich da ja mal durchjagen....

gsh 26. Aug 2007 01:04

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
Ist absolute kein Problem
aber ich glaub nicht des da dein Check tool so viel findet
XML-Code:
<?xml version="1.0"?>
<List></List>

semo 26. Aug 2007 01:34

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
puuhhhh: dein code ist ein wenig chaotisch....
Delphi-Quellcode:
      XMLDocument.NodeIndentStr := '<2 Leerzeichen>'; // ist für das Auslesen unrelevant, benötigts du doch erst beim Erstellen
      XMLDocument.FileName := XMLFilename;
      if (not(FileExists(XMLFilename))) or {OK}
        (XMLDocument.IsEmptyDoc) then { IsEmptyDoc kann man doch erst nach einem LoadFromFile oder derartiges aufrufen?!} 
      begin
        XMLDocument.LoadFromXML('<?xml version="1.0"?><'+cXMLRootNodeName+'></'+cXMLRootNodeName+'>');
        XMLDocument.SaveToFile;
      end;
dein code:
Delphi-Quellcode:
     
try
  XMLDocument.Active := true;
except
  ShowMessage('XML Fehler: Die Datei "'+XMLFilename+'" ist fehlerhaft.');
  Result := false;
end;

//Des sind die verschiedenen Möglichkeiten die ich getestet hab
1. Möglichkeit
2. Möglichkeit
3. Möglichkeit
--> sollte so aussehen:
Delphi-Quellcode:
     
try
  XMLDocument.Active := true;

  { hier fehlt meines Erachtens nach das Laden des XML Files }

  //Des sind die verschiedenen Möglichkeiten die ich getestet hab
  1. Möglichkeit oder
  2. Möglichkeit oder
  3. Möglichkeit
except
  ShowMessage('XML Fehler: Die Datei "'+XMLFilename+'" ist fehlerhaft.');
  Result := false;
end;
Weil wenn bei dir da was fehlschlägt,
dann macht er ja trotzdem weiter mit deinen Möglichkeiten.

gsh 26. Aug 2007 09:10

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
Zitat:

Zitat von computer-glossar.de
Delphi-Quellcode:
      XMLDocument.NodeIndentStr := '<2 Leerzeichen>'; // ist für das Auslesen unrelevant, benötigts du doch erst beim Erstellen
      XMLDocument.FileName := XMLFilename;
      if (not(FileExists(XMLFilename))) or {OK}
        (XMLDocument.IsEmptyDoc) then { IsEmptyDoc kann man doch erst nach einem LoadFromFile oder derartiges aufrufen?!} 
      begin
        XMLDocument.LoadFromXML('<?xml version="1.0"?><'+cXMLRootNodeName+'></'+cXMLRootNodeName+'>');
        XMLDocument.SaveToFile;
      end;

ok NodeIndentStr ist jetzt nur noch beim speichern drinnen
IsEmptyDoc ist auch weg

dein code:
Delphi-Quellcode:
     
try
  XMLDocument.Active := true;
except
  ShowMessage('XML Fehler: Die Datei "'+XMLFilename+'" ist fehlerhaft.');
  Result := false;
  exit;
end;

//Des sind die verschiedenen Möglichkeiten die ich getestet hab
1. Möglichkeit
2. Möglichkeit
3. Möglichkeit
Weil wenn bei dir da was fehlschlägt,
dann macht er ja trotzdem weiter mit deinen Möglichkeiten.[/quote]
nein
ich hab nur vergessen nach dem ersten except block ein exit aufzurufen (weil ich des früher anderes gemacht hab)


Aber des Problem das er einfach stecken bleibt ist immer noch da :wall:

semo 26. Aug 2007 09:28

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
kannst du deine xml_tlb.pas mal anhängen? habe hier msxml 6.0 importiert....

gsh 26. Aug 2007 09:43

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
Also ich nutze diese units
Delphi-Quellcode:
uses xmldom, XMLIntf, msxmldom, XMLDoc

semo 26. Aug 2007 10:02

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
ShowMessage(XMLDocument.DocumentElement. NodeName);
--> hier bekomme ich als ShowMessageDialog den String 'List' angezeigt

ShowMessage(XMLDocument.Node.ChildNodes.Last.NodeN ame);
--> es existieren keine Childnodes in deinem XML Dokument!

ShowMessage(XMLDocument.ChildNodes.Last.NodeName);
--> es existieren keine Childnodes in deinem XML Dokument!

gsh 26. Aug 2007 10:13

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
hmm ja
aber wenn ich ShowMessage(XMLDocument.DocumentElement.NodeName); aufrufe dann bleibt er einfach in der zeile hängen

semo 26. Aug 2007 10:15

Re: Beim XML laden bleibt die Anwendung einfach hängen
 
sicher?
vielleicht ist der dialog einfach nur in den hintergrund gerutscht?
dann schaut es so aus als wenn nix mehr geht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 1 von 2  1 2      

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