2016-04-30 5 views
-1

Ich habe so viel wie möglich gesucht und das einzige, was ich finden kann, sind Beispiele, die für meine Situation nicht relevant sind. Also bin ich hergekommen. Ich mache einen Speichereditor und versuche, die Kombinationsfeldoption in die Sicherungsdatei schreiben zu lassen. Nun, es scheint den ganzen Weg bis zu dem Punkt zu bekommen, an dem es geschrieben wird, aber dann schiebt es den Eingabestringfehler auf mich. Hier ist der relevante Code. Oh, und die ersten Zeichen der Kombinationsfeldoptionen sind Hexadezimalwerte.Warum erhalte ich einen Fehler "Input String is not in correct format"?

EDIT: ich einen Rückzieher, wenn die Zeichenfolge war tatsächlich eine Zeichenfolge

 string filename = textBox1.Text; 

     //if comboBox1.SelectedIndex 
     string comboxVal = comboBox1.Text; 
     char[] chimney = new char[4]; 
     chimney[0] = '0'; 
     chimney[1] = 'x'; 
     comboxVal.CopyTo(0, chimney, 2, 2); 


     string s = new string(chimney); 
     label7.Text = s; 
     FileStream fw = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite); 
     fw.Position = 0x684; 
     fw.WriteByte(Convert.ToByte(s)); 
     fw.Close(); 
+0

Welche Zeile wirft? –

+0

Zeichen und Zeichenfolge in C# sind zwei Byte-Objekte mit einer privaten Eigenschaft, die angibt, ob ein Zeichen aus ein oder zwei Bytes besteht. Sie müssen einen Codierungstyp wie Ascii, UTF7, UTF8, Unicode verwenden, um ordnungsgemäß in/aus einem Byte-Array zu konvertieren. Sie verschieben Ihre Stream-Position zu 0x684, die wahrscheinlich in der Mitte eines zwei Byte-Zeichens den Fehler gibt. – jdweng

+0

string compWrite = Convert.ToString (write); fw.WriteByte (Convert.ToByte (compWrite)); – blujay

Antwort

0

Lasst uns sehen, was hier passiert.

Sie haben char[] write. Ein Array von Zeichen.

Sie rufen string compWrite = Convert.ToString(write);. Die Überladung von Convert.ToString(object value), die ein Objekt als Eingabe akzeptiert, wird vom Compiler ausgewählt (Sie können es überprüfen, indem Sie den Mauszeiger über ToString bewegen).

So wird Convert.ToString(object) aufgerufen und das Ergebnis ist System.Char[], die in compWrite gespeichert ist.

Jetzt haben wir Convert.ToByte(compWrite), die versucht, die Zeichenfolgendarstellung einer Zahl in eine ganzzahlige Variable vom Typ Byte zu konvertieren. Jeder Zweifel, dass es mit "Input String nicht im richtigen Format" Fehler ist fehlgeschlagen?

Verwandte Themen