Ошибка "startIndex должен быть меньше, чем длина строки." - C#
Формулировка задачи:
Доброго времени суток!
Задача такая: "Достать из файла координаты x,y и z, преобразовать в некую строку, которую отправить последовательным портом."
Читаемые строки из файла имеют вот такой вид:
У меня все отлично работает пока не считает вот эту строку:
Зависает на обработке "Y".
Вот код:
Текст ошибки:
Где может крытся баг?
Feed X 0.00100 Y 1.49011 Z 0.00000 R 107.29096
Feed X 4.99900 Y 1.51009 Z 0.00000 R 108.73015
Листинг программы
- ...
- public string ConverToString(double n)
- {
- string str = n.ToString();
- int i = str.IndexOf(',');
- if (i != -1)
- {
- string str_A = str.Remove(i);
- string str_B = (str.Substring(i + 1));
- return String.Concat(str_A, str_B);
- } return str;
- }
- private void SendInf() // відправка інформації на порт тип STRING
- {
- alpha.mul_X = alpha.textBox_mull(textBox_multiX.Text, textBox_multiX.Enabled);
- alpha.mul_Y = alpha.textBox_mull(textBox_multiY.Text, textBox_multiY.Enabled);
- alpha.mul_XY = alpha.textBox_mull(textBox_multiXY.Text, textBox_multiXY.Enabled);
- alpha.summ_X = alpha.textBox_summ(textBox_summX.Text, textBox_summX.Enabled);
- alpha.summ_Y = alpha.textBox_summ(textBox_summY.Text, textBox_summY.Enabled);
- alpha.summ_XY = alpha.textBox_summ(textBox_summXY.Text, textBox_summXY.Enabled);
- alpha.X = (double)(alpha.X * alpha.mul_X * alpha.mul_XY) + alpha.summ_X + alpha.summ_XY;
- alpha.Y = (double)(alpha.Y * alpha.mul_Y * alpha.mul_XY) + alpha.summ_Y + alpha.summ_XY;
- if (!serialPort2.IsOpen) //перевірка на відкритий порт
- {
- serialPort2.PortName = ((string)comboBox_COM_ports.SelectedItem);
- serialPort2.Open();
- richTextBox2.Text += ((string)comboBox_COM_ports.SelectedItem);
- richTextBox2.Text += " opened.\n";
- }
- if (serialPort2.IsOpen) //відправляєм інфу
- richTextBox2.Text += String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Remove(3), ConverToString(alpha.Y).Remove(3), alpha.Z, alpha.end_msg); //<<==== ОШИБКА ЗДЕСЬ. Подчеркивает точку с запятой, тоесть конец строки
- richTextBox2.Text += "\n";
- serialPort2.Write(
- String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Remove(3), ConverToString(alpha.Y).Remove(3), alpha.Z, alpha.end_msg));
- }
- ....
Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll
Дополнительные сведения: startIndex должен быть меньше, чем длина строки.
Решение задачи: «Ошибка "startIndex должен быть меньше, чем длина строки."»
textual
Листинг программы
- String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Length>4? ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д