System Null Reference Exception ohne Visual Studio

Marcolotti

Grünschnabel
Hallo,

ich habe wochenlang an einer Anwendung geschrieben und sie hat bei mir auf dem Notebook und dem Arbeitsplatz-Rechner keine Fehler gebracht. Auf beiden ist Visual Studio 2008 inkl. Service Pack 1 drauf.

Nun habe ich es Veröffentlicht und wollte es auf einem anderen Rechner installieren und dort kommt folgender Fehler.

System Null Reference Exception: Der Objektverweis wurde nicht auf eine Objektinstanz

Auf diesem anderen Rechner ist kein VS2008 installiert.

Was kann das sein?

Vielen Dank im Voraus.:(
 
Hi und willkommen

Eine nicht initialisierte Variable / Referenz mehr kann man dazu nicht sagen.
Rausfinden kannst das nur du selbst, da du den Code hast. Der ExceptionStack wird bei einer Unhandled Exception mit ausgegeben.
 
Hallo Nico,

vielleicht kannst du mir die entscheidene Codezeile verraten, wo bzw. warum ich die Daten initialisieren soll bzw. ich kanns einfach nicht verstehen.

Public Class Form1

Dim daten(10000, 50)
.....


Public Function ReadArray(ByVal sFile As String) As Object
Dim F As Integer
Dim nCount As Long
Dim daten As Object

If Len(Dir$(sFile)) > 0 Then
F = FreeFile()
FileOpen(1, sFile, OpenMode.Binary)

FileGet(1, nCount)

FileGetObject(1, daten)
FileClose(1)
End If
ReadArray = daten
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call start1()
Call start2()
..........


Sub start1()
daten.Initialize()
Me.hilf = 0 : o = 0
If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Sammlung\konf.ini") = False Then Form2.ShowDialog()
FileOpen(2, Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Sammlung\konf.ini", OpenMode.Input)
Input(2, daten(0, 5))
FileClose(2)
er = 1
End Sub

Sub start2()
Form8.Show()
Form8.Label2.Text = "Datenbank wird geladen..." : Form8.Label2.Refresh() : Form8.ProgressBar1.Value = 20
daten = ReadArray(daten(0, 5) & "daten.adb")
Form8.Label2.Text = "Daten werden eingerichtet..." : Form8.Label2.Refresh() : Form8.Refresh()
'MsgBox("Daten:" & daten(0, 0) & " - o:" & o)
o = (60 / daten(0, 0)) <-------------- Hier tritt dieser Fehler auf.
.......

Vielen lieben Dank im Voraus.
 
Hi

Bitte pack den Code in entsprechende Code-Tags (CODE, CSHARP, VBNET,...). Das macht die Sache erheblich lesbarer! Danke

Entweder ist das Array Null (Nothing) oder der Inhalt an der entsprechenden Stelle. Wie gesagt, dass kann ich hier jedoch nicht rausfinden

Aber einen Hinweis noch:
Du schreibst sehr unschönen und unsauberen Code! Mal ein paar Beispiele:
- mehrere Anweisungen in einer Zeile
- Mehrfach nacheinander Aufrufe von Refresh
- keine Datentypen
Du programmierst in VB.NET, nicht in VB6. Auch wenn VB.NET diese Unsauberheiten noch erlaubt, sollte man sie sich doch abgewöhnen. Zumal es den Code auch wartbarer macht!
 
Hi,

ich werde mir deine Hinweise zu Herzen nehmen. Wieso aber geht das Programm nur nicht auf Rechnern ohne VS?

Das muss ja irgendeinen Grund haben.

Danke.

P.S. Die mehrfach Refreshs hintereinander haben den Grund, weil in der Zeile dazwischen Daten geladen werden und über den aktuellen Standpunkt der Aktivität berichtet werden soll.
 
Es hat sicherlich auch einen Grund. Das kannst du jedoch nur durch Debugging und Logging herausfinden.
Hast du geprüft, ob die einzulesende Datei auch da vorhanden ist, wo sie erwartet wird?
Wir sie korrekt eingelesen?

PS:
Form8.Label2.Refresh() : Form8.Refresh()
Dazwischen findet nichts weiter statt ;)
 
Zurück