Announcement

Collapse
No announcement yet.

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

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

  • Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Hi, hab mich hier mal frisch angemeldet, hoffe ihr könnt mir helfen.

    Ich arbeite gerade an einem kleinen Text-Based RPG und krieg ständig beim aufrufen der Funktion loadItemVal() den Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
    [highlight=vbnet]
    Module itemValues

    Public Class itemVal
    Public itemID As Integer
    Public itemName As String
    '[...]
    End Class

    Public itemCount As Integer = 3
    Public item(itemCount) As itemVal

    Public Function loadItemVal()

    For i As Integer = 0 To itemCount
    Select Case i
    Case 0 'Nichts
    item(i).itemID = i ' Hier kommt der Fehler
    item(i).itemName = "Leer"
    Case 1 'Item1
    item(i).itemID = i
    item(i).itemName = "IrgendEinItem"
    '[...]
    End Select
    Next

    End Function
    End Module
    [/highlight]
    Bin erst relativ kurz in VB unterwegs. Hat irgendjemand vllt. ein Lösungsvorschlag? (wahrscheinlich irgendwas total triviales..)

  • #2
    Dein item(itemCount) Array kann itemVal Objekte enthalten aber erstmal ist da keins drin. Jeder der 4 Plätze im Array ist erstmal leer und du greifst ins Leere darum knallt es. Du musst zuerst auch itemVal Objekte in dein Array reinfüllen.

    Comment


    • #3
      Mh, ok danke. Kannst du mir vllt. zeigen wie das geht? Bin mir da nicht wirklich sicher :/

      Comment


      • #4
        Na, wie erzeugt man von einer Klasse ein neues Objekt?

        Comment


        • #5
          Meinst du so?
          [highlight=vb] Public item(itemCount) As New itemVal [/highlight]

          Da meckert halt direkt der Compiler, dass Arrays nicht mit "New" deklariert werden können.

          Fehler 7 Arrays können nicht mit "New" deklariert werden. F:\r4yn\Dokumente\Projekte\Visual Basic\Unbennantes Spiel\Game VB\itemValues.vb 35 31 Game VB
          Sorry, hab nich allzu viel Erfahrung, mach das als reines Hobby

          Comment


          • #6
            Aus der Doku

            http://msdn.microsoft.com/de-de/libr...v=vs.100).aspx

            Comment


            • #7
              Originally posted by Ralf Jansen View Post
              Super Sache! Dankeschön

              So gehts:

              [highlight=vb]
              Module itemValues

              Public Class itemVal
              Public itemID As Integer
              Public itemName As String
              '[...]
              End Class

              Public itemCount As Integer = 3
              Public item(itemCount) As itemVal

              Public Function declareItem() ' <-- Vor loadItemVal() ausführen
              For i As Integer = 0 To itemCount
              item(i) = New itemVal
              Next
              End Function

              Public Function loadItemVal()

              For i As Integer = 0 To itemCount
              Select Case i
              Case 0 'Nichts
              item(i).itemID = i ' Hier kommt der Fehler
              item(i).itemName = "Leer"
              Case 1 'Item1
              item(i).itemID = i
              item(i).itemName = "IrgendEinItem"
              '[...]
              End Select
              Next

              End Function
              End Module [/highlight]
              Zuletzt editiert von r4yn; 10.02.2013, 21:48.

              Comment


              • #8
                Typischerweise packt man so etwas in den Konstruktor und verlangt nicht vom Aufrufer dass das vorher aufgerufen wird. In großen Projekten kann so etwas schnell unübersichtlich werden.

                Comment


                • #9
                  Typischerweise packt man so etwas in den Konstruktor und verlangt nicht vom Aufrufer dass das vorher aufgerufen wird. In großen Projekten kann so etwas schnell unübersichtlich werden.
                  Ja ... aber der Code steckt jetzt in einem Modul und im ursprünglichen VB war ein Modul keine Klasse. Da wirst du jetzt ein wenig mehr erklären müssen als der Hinweis auf einen Konstruktor Mit ein wenig mehr OOP Erfahrung wird der Fragesteller vermutlich später selbst darauf kommen das man das besser lösen kann.

                  Comment

                  Working...
                  X