none
Das Objekt des Typs "System.Int32" kann nicht in Typ "System.String" umgewandelt werden. RRS feed

  • Frage

  • Guten morgen,

    ich habe folgendes problem:

    Das soll gemacht werden:

    private void openToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form1.ItemList.Clear();
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Title = "Load mobname_*.lod";
                openFileDialog.InitialDirectory = "";
                openFileDialog.Filter = "mobname_*.lod|mobname_*.lod|All|*.*";
                if (openFileDialog.ShowDialog() == DialogResult.Cancel)
                    return;
                Text = "Mobname Editor(" + openFileDialog.SafeFileName + ")";
                using (BinaryReader binaryReader = new BinaryReader((Stream)File.Open(openFileDialog.FileName, FileMode.Open)))
                {
                    binaryReader.ReadInt32();
                    while (binaryReader.BaseStream.Position < binaryReader.BaseStream.Length)
                    {
                        Form1.ItemList.Add(new ItemContainer()
                        {
                            Index = binaryReader.ReadInt32(),
                            String = binaryReader.ReadBytes(binaryReader.ReadInt32())
                        });
                        listBox1.Items.Clear();
                    }
                    int num = Enumerable.Count<ItemContainer>((IEnumerable<ItemContainer>)Form1.ItemList);
                    for (int index = 0; index < num; ++index)
                        listBox1.Items.Add((object)((string)(object)Form1.ItemList[index].Index + (object)" - " + Encoding.GetEncoding(ISO).GetString(Form1.ItemList[index].String)));
                }
            }

    Jedoch wenn ich die Datei geöffnet habe werden die Daten nicht in der Listbox angezeigt, sondern folgender Fehler erscheint:

    Das Objekt des Typs "System.Int32" kann nicht in Typ "System.String" umgewandelt werden.

    Er kommt hier:

      listBox1.Items.Add((object)((string)(object)Form1.ItemList[index].Index + (object)" - " + Encoding.GetEncoding(ISO).GetString(Form1.ItemList[index].String)));

    Samstag, 28. Juni 2014 23:57

Antworten

  • Hallo,

    eine "Cast-Orgie" kann aus einem Integer (Int32) keine Zeichenkette machen, dafür müsstest Du ToString() aufrufen:

    listBox1.Items.Add(Form1.ItemList[index].Index.ToString() 
    		+ " - " 
    		+ Encoding.GetEncoding(ISO).GetString(Form1.ItemList[index].String));
    oder auch String.Format:
    listBox1.Items.Add(String.Format("{0} - {1}",
    		Form1.ItemList[index].Index,
    		Encoding.GetEncoding(ISO).GetString(Form1.ItemList[index].String)));

    Mehr siehe: Formatierung von Typen

    Gruß Elmar

    Sonntag, 29. Juni 2014 05:24
    Beantworter