C# Problem mit "null"

Gast #2497569
Lesenswert?

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!
#2497608
Lesenswert?

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
}
Gast #2497611
Lesenswert?

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.
#2497670
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren