проблема с IndexOutOfRangeException в c#?

Я стараюсь делать split, который позволял бы мне разделять данные, которых серийный порт посылает мне, но в момент чтения их, приложение задерживается и посылает мне ошибку в массиве это часть кода, который я использую, чтобы делать split, я хотел бы знать, что может производить меня проблема.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.IO;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private delegate void DelegadoAcceso(String accion);
        private String strBufferIn;
        private String strbufferOut;




        public Form1()
        {
            InitializeComponent();
        }

        private void AccesoForm(String accion)
        {

            //----------------------------------Aqui llegan los datos
            strBufferIn = accion;
            TxtDatosRecibidos.Text = strBufferIn;
            string input = TxtDatosRecibidos.Text;
            string[] sp;
            sp = input.Split(',');
            textBox1.Text = sp[0];
            textBox2.Text = sp[1];
            textBox3.Text = sp[2];
            textBox4.Text = sp[3];
            textBox5.Text = sp[4];
            textBox6.Text = sp[5];
            textBox7.Text = sp[6];
            textBox8.Text = sp[7];
0
задан 20.03.2019, 07:27
1 ответ

Ошибка, которая ты estГЎ давая значит, что ты пробуешь получить информацию о положении одного array[], в котором не существуют данные, а именно, если мы предполагаем, что у твоего array есть 6 положений с данными (с 0 до 5) и ты пробуешь получать dstos ее posiciГіn 6 дает тебе ошибку IndexOutOfRangeException, потому что ты прошел ранга array.

В cГіdigo, который estГЎs, используя deberГ-туз подтверждать, перед тем, как распределять данные TextBox, что то, что ты попробуешь вводить в них, существует, например Г©sta он формирует:

sp = input.Split(',');
if (sp.Length > 0)
    textBox1.Text = sp[0];

if (sp.Length > 1)
    textBox2.Text = sp[1];

if (sp.Length > 2)
    textBox3.Text = sp[2];
2
ответ дан 02.12.2019, 05:28
  • 1
    Старик ты - проклятый бог большое спасибо, я решаюсь, надеюсь не столкнуться с другой ошибкой – Josue De Jesus Ramires 20.03.2019, 07:03

Теги

Похожие вопросы