2012-04-01 3 views
3

Ich versuche, einen Knoten nur auf den EInvalidPointer-Fehler auf Delphi zu laden.Delphi: XML Node geht EInvalidPointer Wenn ich versuche, darauf zuzugreifen

Meine "xml" geht so:

<RYCFile> 
    <GeneralInfo> 
     <SystemName/> 
     <NSpecies>1</NSpecies> 
     <NMaxCriterias>2</NMaxCriterias> 
    <MaxRating>1</MaxRating> 
     <SystemType>0</SystemType> 
     <EvolutivePointCost>1</EvolutivePointCost> 
    </GeneralInfo> 
    <Race Index="1"> 
     <RaceName>Race #1</RaceName> 
     <NumCriterias>2</NumCriterias> 
     <Criteria Index="1"> 
      <Name>Criteria #1</Name> 
       <NSubCriterias>0</NSubCriterias> 
       <Limiter>0</Limiter> 
      </Criteria> 
      <Criteria Index="2"> 
       <Name>Criteria #2</Name> 
       <NSubCriterias>0</NSubCriterias> 
       <Limiter>0</Limiter> 
      </Criteria> 
     </Race> 
</RYCFile> 

ich die Document nicht einmal lesen kann.

Ich habe überall gegooglet, aber ich bin am Ende des Witzes, so scheint es. Ich kann keine Lösung finden, die entfernt an das angepasst ist, was ich aushalte.

-Code zu "lesen" verwendet:

FormSkeletonMaker.XMLDocumentFile.LoadFromFile(FileName); 
FormSkeletonMaker.XMLDocumentFile.Active := True; 
iNode := FormSkeletonMaker.XMLDocumentFile.ChildNodes.FindNode('GenInfo'); 

jetzt geht es auf diese Weise. Ich teste gerade die Fähigkeit dieses Dokument zu laden (es wurde auf dem gleichen Programm gemacht).

+0

Ich habe den ursprünglichen Beitrag aktualisiert. Weit besser lesbar. – AdelC

+0

verwenden Sie bitte vier Leerzeichen statt ">", um den Code zu formatieren – dldnh

Antwort

4

Wenn die DocumentElement-Eigenschaft fehlschlägt, ist entweder der Objektzeiger FormSkeletonMaker oder XMLDocumentFile ungültig.

+0

Das Formular kann nicht das eine sein. Ich habe XMLDocumentFile zu einer Komponente in meinem Programm gemacht (kein dynamisches Laden oder irgendetwas). Wenn überhaupt, versuche ich Showmessage (XMLDocumentFile.XML.Text); und ich bekomme das ganze xml. – AdelC

+0

Es scheint, dass Sie Recht haben. Irgendwo ist die XMLDocumentFile in die Irre gegangen - ich habe sie wie eine dynamische behandelt, während sie statisch war. Schlecht, schlechter Fehler. Der alte Code, den ich ausprobierte, verwendete dynamisches Zeug und es funktionierte nicht einfach, weil ich das XML-Dokument erstellen musste. – AdelC

+0

Wenn Sie ein 'TXMLDocument' dynamisch erstellen, ohne dass ein' Owner' angegeben ist, fungiert es als Referenz-gezählte Schnittstelle (dies wird in der Dokumentation so oft angegeben), Sie müssen also besonders vorsichtig sein. Besser ist es, stattdessen die Funktionen 'NewXMLDocument()' und 'LoadXML ...()' zu verwenden, die eine 'IXMLDocument'-Schnittstelle zurückgeben. –