Announcement

Collapse
No announcement yet.

NullReferenzeException

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NullReferenzeException

    Hallo alle zusammen,

    ich bin VB6 Umsteiger und bin etwas verwundert warum dieser Code nicht funktioniert. In VB6 hat es doch auch wunderbar geklappt und in VBA geht es jetzt auch noch.

    Fehlermeldung:

    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Code bleibt bei Next stehen

    Könnt ihr mir noch helfen?

    Gruß

    Ralf

    [highlight=vbnet]
    Dim objWMI As New Object
    Dim objInstances As New Object
    Dim objInstance As New Object
    Dim strServer As String
    strServer = "Laptop"
    On Error Resume Next
    objWMI = GetObject("winmgmts://" & strServer & "/root\cimv2")
    If 0 = Err.Number Then
    objInstances = objWMI.InstancesOf("Win32_OperatingSystem", 48)
    On Error Resume Next

    For Each objInstance In objInstances

    Debug.Print(objInstance.CSDVersion)

    On Error GoTo 0
    Next
    End If
    [/highlight]
    Zuletzt editiert von gfoidl; 07.10.2010, 19:58. Reason: VB-Tags eingefügt

  • #2
    Hallo und willkommen im Forum,

    die Fehlermeldung ist eigentlich eindeutig. Geh mal mit dem Debugger Schritt für Schritt durch und prüfe wo und welches Objekt den Wert Null / Nothing hat.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo Gfoidl,

      leider verstehe ich es nicht. Ich vermisse auch meine Lupe aus VB6 mit der ich eine Variable prüfen konnte. Und sowieso läuft das programm ja unter VB6 und VBA (Excel). Also sollte doch alles passen? Was ist denn da so viel anders in VB.Net? Ja ich weis, OOP :-)

      Aber ich habe heute den halben Tag im Netz verbracht und bin immer noch nicht weiter gekommen.

      Im Direktfenster sehe ich auch nicht unbedingt eine erleuchtende Antwort.


      "Der öffentliche Member CSDVersion für den Typ Objekt wurde nicht gefunden" objInstance.CSDVersion

      Kannst du mir vielleicht erklären was da abläuft.

      Wäre dir sehr dankbar

      Comment


      • #4
        Hallo,

        am einfachsten ist VB6 zu vergessen und VB.net zu lernen. Da eigentlich alles anders ist wird das sonst nichts

        Siehe Einstieg in VB.NET und Einstieg in Visual Basic 2010. Ich denke es ist sinnvoller wenn du diese Bücher durcharbeitest als wenn ich hier zu erklären beginne.

        BTW: Wenn du VB.net dann verstehst änderst du deinen Username?


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          OK, ich vergesse dann auch gleich dieses Forum :-)
          Ich habe heute auch schon in Online Büchern gesucht. Ich bin mir sicher, dass dieses Problem in keinen der beiden Bücher steht. Habe echt nach NullReferenz... gesucht.


          Ich habe jetzt nicht erst die Zeit mich Wochenlang mit den Büchern zu beschäftigen um den blöden kleinen Fehler loszuwerden, da ich die Lösung heute schon gebraucht hätte.
          Da findet man endlich jemanden der einem dem Tipp geben könnte und der mag einem dann nur ärgern :-)


          Also dann trotzdem Danke für deine Mühe.

          Grüße aus Bayern

          Ralf

          Comment


          • #6
            Hallo,

            ich will dich nicht ärgern, sondern Hilfe zur Selbsthilfe geben Da ist der Lerneffekt viel größer - glaub mir das.

            Wenn ich das Problem hätte würde ich eben mit dem Debugger durch den Code gehen bis ich die Stelle finde wo der Fehler auftritt -> dann ist dieser mal lokalisiert und kann behoben werden.

            On Error ... sollte nicht verwendet werden. In .net gibt es dafür Try-Catch. Bau das mal ein => du bekommst Fehlerinformationen geliefert. Oder du lässt es weg dann stoppt VS automatisch dort wo der Fehler auftritt. Probier das mal - mehr kann/will/möchte ich nicht tun*

            * auch da ich am Code nicht falsches auf den ersten Blick erkennen kann - ich müsste das Problem selbst reproduzieren können, aber das ist deine Aufgabe


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Hallo,
              Ich bin mir sicher, dass dieses Problem in keinen der beiden Bücher steht.
              Man könnte natürlich bei Codeproject nach Vorlagen ohne Programmierfehler Ausschau halten, z.B. mit "winmgmt:\\": http://www.codeproject.com/KB/system...?display=Print
              MfG
              Cheat-Sheets for Developers / Programming Quotes

              Comment


              • #8
                Na ja, ohne onerror usw. bleibt der Code bei

                For Each objInstance In objInstances

                stehen und ich bin wieder keinen Schritt weiter :-(

                Meldung "Überprüfen sie die Error Code Eigneschaft.....

                Na dann gute Nacht euch Beiden :-)

                Comment


                • #9
                  Hallo,

                  ist dann objInstances Null/Nothing?

                  mfG Gü
                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                  Comment


                  • #10
                    Na also,

                    [highlight=vbnet]
                    Dim objWMI As Object
                    Dim objInstances As Object
                    Dim objInstance As Object
                    Dim strServer As String
                    strServer = "Laptop"
                    objWMI = GetObject("winmgmts:\\" & strServer & "\root\cimv2")
                    If 0 = Err.Number Then
                    objInstances = objWMI.execquery("select * from Win32_OperatingSystem")


                    For Each objInstance In objInstances

                    MessageBox.Show(objInstance.CSDVersion)

                    Next
                    End If
                    End Sub
                    [/highlight]
                    Zuletzt editiert von gfoidl; 07.10.2010, 22:25. Reason: VB-Tags

                    Comment


                    • #11
                      Hallo,

                      gehts jetzt?!

                      Bitte füge Code-Tags ein, dann ist der Code lesbarer und dir wird (auch von anderen) schneller geholfen. Wie das geht steht in Hinweise und Formatierung von VB.net-Code



                      mfG Gü
                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                      Comment


                      • #12
                        OK, habe mir das Ding mit deiner Formatierung jetzt ausgedruckt.

                        Werde mich bestimmt bald hier wieder melden.

                        Danke dir noch einmal für deine Unterstützung

                        Gruß

                        Ralf

                        Comment


                        • #13
                          ausgedruckt.
                          ...und auch schon ausprobiert ? Zum Vergleich siehe Anhang
                          Attached Files
                          MfG
                          Cheat-Sheets for Developers / Programming Quotes

                          Comment

                          Working...
                          X