Ошибка "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? ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д