AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# Der Objektverweis wurde nicht auf eine Objektinstanz festgel
Thema durchsuchen
Ansicht
Themen-Optionen

Der Objektverweis wurde nicht auf eine Objektinstanz festgel

Ein Thema von Luckie · begonnen am 30. Mai 2008 · letzter Beitrag vom 30. Mai 2008
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Der Objektverweis wurde nicht auf eine Objektinstanz festgel

  Alt 30. Mai 2008, 14:45
Ich habe ein ganz mysteriöses Problem:

Folgende Klasse:
Code:
// WebsiteItem
    public class WebsiteItem
    {
        private XPathDocument _pathDoc;
        private Boolean _isPrimary;
        private string _url;

        #region Getter/Setter

        public Boolean IsPrimary
        {
            get { return _isPrimary; }
            set { _isPrimary = value; }
        }

        public string URL
        {
            get { return _url; }
            set { _url = value; }
        }

        #endregion

        public WebsiteItem(XPathDocument PathDoc)
        {
            _pathDoc = PathDoc;
        }

        public void GetDetails()
        {
            XPathNavigator nav = _pathDoc.CreateNavigator();
            XPathNodeIterator nodeIter = nav.Select("businessRelationship/businessSupplier/company/websiteList/*");          
            if (nodeIter != null)
            {
                while (nodeIter.MoveNext())
                {
                    if (nodeIter.Current.HasAttributes)
                    {
                        _isPrimary = Convert.ToBoolean(nodeIter.Current.GetAttribute("primary", ""));
                    }
                    //Debug.WriteLine("==> " + nodeIter.Current.SelectSingleNode("website").Value);
                    _url = nodeIter.Current.SelectSingleNode("website").Value;
                }
            }
        }
    }
Und der Aufruf:
Code:
_wi = new WebsiteItem(_pathDoc);
                    _wi.GetDetails();
                    _websiteList.Add(_wi);
So, kommentiere ich die zeile _url = ... aus geht alles wunderbar. Lasse ich sie drinne kommt die fehlermeldung wie im Titel: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt". Kann mir das mal bitte jemand erklären?

Ich habe eine Klasse public class AddressItem die identisch ist mit der obigen nur eben andere XMl-Pfade. Dort habe ich das Problem nicht. Ich kann keinen Unterschied festestellen weder in der Implementierung noch beim Aufruf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 14:52
Hau da doch mal nen Breakpoint rein (genau auf der Zeile) und guck Dir mal an, welches der Elemente denn offensichtlich null ist.

Im Prinzip kommen ja nur nodeIter, sein Current und der SelectedNode in Frage.
Ich tippe am ehesten auf den Node. Gibts diesen "website" Knoten im Xml überhaupt?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 14:59
Das habe ich schon probiert. In den Hintfenster beim Debuggen kann ich sogar den Wert sehen, er wird also richtig ausgelesen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 15:01
Bei wirklich jedem Schleifendurchlauf?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 15:06
Gleich beim ersten.

Es sieht jetzt so aus:
Code:
public void GetDetails()
        {
            XPathNavigator nav = _pathDoc.CreateNavigator();
            XPathNodeIterator nodeIter = nav.Select("businessRelationship/businessSupplier/company/websiteList/*");          
            if (nodeIter != null)
            {
                while (nodeIter.MoveNext())
                {
                    if (nodeIter.Current.HasAttributes)
                    {
                        _isPrimary = Convert.ToBoolean(nodeIter.Current.GetAttribute("primary", ""));
                    }                   
                    if (nodeIter.Current.SelectSingleNode("website") != null)
                    {
                        _url = nodeIter.Current.Value;
                    }
                }
            }
        }
Ach so, was ich vergass zu erwähnen, die eingebaute Abfrage ist immer null. Ist wahrscheinlich ein gaaaaanz dooooofer Fehler.

Und die XML:
XML-Code:
<businessRelationship id="1">
    <businessSupplier id="1">
        <company>
            <companyName>DATAWERK</companyName>
            <websiteList>
                <website primary="true">www.datawerk.de</website>
                <website>www.datawerk.com</website>
            </websiteList>
            <addressList>
                <address primary="true" id="1">
                    <street>Friedrich-Ebert-Straße</street>
                    <number>4</number>
                    <city>Kassel</city>
                    <zipCode>34117</zipCode>
                    <state>Testbundesland</state>
                    <country>Testland</country>
                </address>
            </addressList>
            <landlineNumberList>
                <landlineNumber primary="true" id="1">
                    <countryCode>+49</countryCode>
                    <areaCode>561</areaCode>
                    <localNumber>7016470</localNumber>
                </landlineNumber>
            </landlineNumberList>
        </company>
    </businessSupplier>
</businessRelationship>
Wie gesagt, der gleiche Code funktioniert bei der addressList6e.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 15:17
Was willst du mit dem zweiten XPath bezwecken ? Vom ersten bekommst du ja schon alle website-Elemente und in diesen willst du nun nochmal nach einem website-Kind suchen? Ich würde schätzen: Lass das if einfach weg. Innerhalb der Schleife ist Current ja auf jeden Fall gültig.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Der Objektverweis wurde nicht auf eine Objektinstanz fes

  Alt 30. Mai 2008, 15:30
@ Khabarakh:
Ok, Jungs. Können wir das auf die Hitze schieben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 16:21 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