Fehler bei Compilierung



  • Hallo,
    habe eine Problem mir dem Borland C++ Compiler. Wollte den Quelltext Compilieren und es kam dabei folgendeer Fehler in einem Fenster:

    Zugriffsverletzung bei Adresse 51F07874 in Modul'rtl100.bpl'. Schreiben von Adresse 00000000.

    Hier ist der Quelltext der Methode. Der Fehler tritt in der letzten Zeile auf.

    void xmlData(void)
    {
            	std::vector<AnsiString> Para;
    
    			_di_IXMLDocument XML = LoadXMLDocument("dynamictext_fsc.xml");
           		_di_IXMLNodeList NodeList = XML->DocumentElement->ChildNodes;
                int count = NodeList->Count;
    
               	for (int i=0; i<count; i++)
                {
                    _di_IXMLNode ValueNode = NodeList->Nodes[i];
                 	Para[i] = ValueNode->ChildNodes->FindNode("eng")->NodeValue; // hier der Fehler.
                }
    }
    

    Kann mir da jemand helfen? 😞



  • Hallo

    der Fehler kommt weil->FindNode keinen Eintrags mit dem Wert eng findet, und deshalb einen NULL-Zeiger zurückgibt. Du must also erstmal das Rückgabeergebnis überprüfen.

    bis bald
    akari



  • Hey,
    habe das nochmal überprüft. "eng" ist doch der Name eines Unterknotens. Er existiert und in einem anderen Softwaremodul hat es auch geklappt. Allerdings sind es diesesmal 991 Einträge die insgesamt in den Vektor eingelesen weden sollen. Alle sind vom Typ AnsiString und haben eine ungefähre Länge von bis zu 25 Zeichen.
    Woran kann es liegen?



  • Der Vector Para ist zu Beginn leer, d.h. du kannst nicht einfach irgendwelche Elemente zuweisen, weil eben keine drin sind. Entweder benutzt du push_back in der Schleife, oder du legst vorher genügend Elemente im Vector an, z.B. mit dem Konstruktor oder resize.


Anmelden zum Antworten