Hallo Forum! Ich bin eigentlich Hardwareentwickler und habe mit Software nicht viel zu tun.. Nun möchte ich aber doch mel ein Programm schreiben dass mit einer Hardware von mir kommuniziert. Da gibt es aber am Anfang gleich ein Problem! Ich lese die Daten ein und schreibe sie in ein File. Wenn ich später das File auslese, geht es auch, aber es kann sein das auch mal in einem String "null" steht. ich mache nun folgendes: Ich lese das File string daten = ReadFile(filename); dann zerteile ich sie nach einem trennzeichen string[] geteilt=daten.split(';'); versuche die adresse zwei zu lesen label1.text=geteilt[2]; so wenn nun in der adresse 2 nichts eingetragen ist dann bekomme ich diesen Fehler: NullReferenceException wurde nicht behandelt. (Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.) ich habe mir gedacht, ok dann frage ich ab bevor ich sie dem label1 übergebeab, ob der innhalt null ist. Aber das geht auch nicht... Bitte um Hilfe!
Thomas schrieb: > ch habe mir gedacht, ok dann frage ich ab bevor ich sie dem label1 > übergebeab, ob der innhalt null ist. Aber das geht auch nicht... du musst einfach das array befragen wie gross ist es. if (geteilt.lengh < 2 ) { zu wenig daten ) (keine ahnung ob lengh stimmt, zur not doku lesen)
Alternativ einfach in einen Try-Catch Block den Zugriff auf die Adresse 2 machen und bei Exception wie gewünscht reagieren.
Thomas schrieb: > ich habe mir gedacht, ok dann frage ich ab bevor ich sie dem label1 > übergebeab, ob der innhalt null ist. Aber das geht auch nicht... Na sicher geht das. Wie machst du das denn? mfg.
Thomas Eckmann schrieb: > Na sicher geht das. nein geht nicht, weil er schon hinter das array greift.
Peter II schrieb: > nein geht nicht, weil er schon hinter das array greift. Kannst du den Satz mal erklären. mfg.
Thomas schrieb: > label1.text=geteilt[2]; D.h. du möchtest das 3. Elemente des Arrays haben Peter II schrieb: > if (geteilt.lengh < 2 ) { > zu wenig daten > ) soweit ich weiß schreibt man Length bei C# groß?! (gute IDE zeigt das an^^) wenn du 3 Elemente im Array hast, dann liefert dir length auch 3. Der Fehler entsteht, weil du über das Array hinausliest und das mag C# nicht. Entweder kann man das mi der oben gezeigten if Schleife regeln oder man setzt try{ dein Code } catch(NullReferenceException){ Daten nicht vollständig } catch(Exception e){ Allgemeiner Fehler e }
Thomas Eckmann schrieb: > Kannst du den Satz mal erklären. wenn man ein array hat string test[2] = ... dann darf man NIE auf test[2] zugreifen, dort steht auch keine NULL oder irgendetwas anderes, man ist schon hinter dem array. Damit kann man auch nicht test[2] == NULL vergleichen. man müsste also das ganze per try catch abfangen, was ich aber als nicht sinnvoll für diesen zweck sehen. Oder einfach vorher mal Prüfuen wie viele werte denn im dem array stecken.
1 | string daten = "blablabla;tata"; |
2 | string [] geteilt = daten.Split (';'); |
3 | int teiler = geteilt.GetUpperBound (0); |
4 | Console.WriteLine ("teiler = " + teiler.ToString ()); |
5 | for (int i = 0; i <= teiler; i++) |
6 | Console.WriteLine (geteilt [i]); |
gibt folgenden Output:
1 | teiler = 1 |
2 | blablabla
|
3 | tata
|
Peter II schrieb: > nein geht nicht, weil er schon hinter das array greift Der Satz ist einfach nur unverständlich. Aber nach deiner Erklärung ist klar, was du damit meinst. Peter II schrieb: > wenn man ein array hat > string test[2] = ... > dann darf man NIE auf test[2] zugreifen Das ergibt aber eine "IndexOutOfRangeException" Und nicht das hier: Thomas schrieb: > so wenn nun in der adresse 2 nichts eingetragen ist dann bekomme ich > diesen Fehler: NullReferenceException wurde nicht behandelt. (Der > Objektverweis wurde nicht auf eine Objektinstanz festgelegt.) Ist leider das Problem, wenn Fragesteller nur Codefetzen liefern, die ursächlich nichts mit dem Fehler zu tun haben. Mit anderen Worten: @Thomas (Gast Bitte den ganzen Code. mfg.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.