[C#] Problem bei for Schleife

Erks

Erfahrenes Mitglied
Folgender Code...
Code:
operanden1pos=infix_operanden_textBox.Text.ToCharArray();
	for(int i=1;i<=operanden1pos.Length;i++)
	{
		string op1=operanden1pos[i].ToString();
		this.listBox4.Items.AddRange(new object[] {op1});
	}

Wenn ich dann in das Textfeld, wo die Zahlen reinkommen Zahlen eingebe und auf den Button klickt führt er den Befehl (s.o.) nicht aus.

Ich bekomm da immer eine Fehlermeldung...
Object reference not set to an instance of an object.

Was meint der da?
Was für einen Fehler hab ich gemacht bzw. was habe ich hier nicht bedacht?
 
Der Index von Arrays ist nullbasiert. Du fängst bei 1 an, dies ist das 2. Zeichen. Ich weiß nicht, ob das beabsichtigt war. Auf alle Fälle solltest du aber eine Fehlermeldung kriegen, wenn du versuchst, auf operanden1pos[operanden1pos.length] zuzugreifen, da es dieses Element im Array nicht gibt...
Mach auf den Beginn der For-Schleife mit F9 einen Haltepunkt und geh mit F11 schrittweise durch, dann findest du den Fehler am schnellsten.
Noch dazu mach der Teil keinen Sinn:

Code:
string op1=operanden1pos[i].ToString();
this.listBox4.Items.AddRange(new object[] {op1});

Es sollte wohl eher so aussehen:

Code:
this.listBox4.Items.Add(operanden1pos[i]);
 
Zuletzt bearbeitet:
ich habe mich da nur vertippt...ich mein natürlich "int i = 0".

Was mich aber wundert ist folgendes. Der Code ist fast der selbe wie oben, aber diesmal steht am Schluss nicht mehr....
Code:
string op1=operanden1pos[i].ToString();
		this.listBox4.Items.AddRange(new object[] {op1});
sondern nur noch...
Code:
this.listBox4.Items.AddRange(new object[] {i.ToString()});

Er zählt ja eigentlich nur die Länge des Arrays, also ist das 3 bei drei Zahlen. Obwohl ich immer nur 3 zahlen eingegeben habe, zählt der mir dann in der Liste alle Zahlen von 0-3, also 4 Ziffern, auf. Das ist eine zuviel.

Übrigens... Dieser Absatz
Code:
this.listBox4.Items.AddRange(new object[] {i.ToString()});
geht. Habe ich mit dem vorigen Beispiel ausprobiert.
 
Natürlich geht der Teil, aber er ist viel zu kompliziert. Wenn der letzte Eintrag in der Liste, der zu viel ist, leer ist, dann würde ich sagen, das is '\0', mit dem man Strings abschließt.
 
Zurück