Ошибка "startIndex должен быть меньше, чем длина строки." - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Задача такая: "Достать из файла координаты x,y и z, преобразовать в некую строку, которую отправить последовательным портом." Читаемые строки из файла имеют вот такой вид:
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
Зависает на обработке "Y". Вот код:
Листинг программы
  1. ...
  2. public string ConverToString(double n)
  3. {
  4. string str = n.ToString();
  5. int i = str.IndexOf(',');
  6. if (i != -1)
  7. {
  8. string str_A = str.Remove(i);
  9. string str_B = (str.Substring(i + 1));
  10. return String.Concat(str_A, str_B);
  11. } return str;
  12. }
  13. private void SendInf() // відправка інформації на порт тип STRING
  14. {
  15. alpha.mul_X = alpha.textBox_mull(textBox_multiX.Text, textBox_multiX.Enabled);
  16. alpha.mul_Y = alpha.textBox_mull(textBox_multiY.Text, textBox_multiY.Enabled);
  17. alpha.mul_XY = alpha.textBox_mull(textBox_multiXY.Text, textBox_multiXY.Enabled);
  18. alpha.summ_X = alpha.textBox_summ(textBox_summX.Text, textBox_summX.Enabled);
  19. alpha.summ_Y = alpha.textBox_summ(textBox_summY.Text, textBox_summY.Enabled);
  20. alpha.summ_XY = alpha.textBox_summ(textBox_summXY.Text, textBox_summXY.Enabled);
  21. alpha.X = (double)(alpha.X * alpha.mul_X * alpha.mul_XY) + alpha.summ_X + alpha.summ_XY;
  22. alpha.Y = (double)(alpha.Y * alpha.mul_Y * alpha.mul_XY) + alpha.summ_Y + alpha.summ_XY;
  23. if (!serialPort2.IsOpen) //перевірка на відкритий порт
  24. {
  25. serialPort2.PortName = ((string)comboBox_COM_ports.SelectedItem);
  26. serialPort2.Open();
  27. richTextBox2.Text += ((string)comboBox_COM_ports.SelectedItem);
  28. richTextBox2.Text += " opened.\n";
  29. }
  30. if (serialPort2.IsOpen) //відправляєм інфу
  31. richTextBox2.Text += String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Remove(3), ConverToString(alpha.Y).Remove(3), alpha.Z, alpha.end_msg); //<<==== ОШИБКА ЗДЕСЬ. Подчеркивает точку с запятой, тоесть конец строки
  32. richTextBox2.Text += "\n";
  33. serialPort2.Write(
  34. String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Remove(3), ConverToString(alpha.Y).Remove(3), alpha.Z, alpha.end_msg));
  35. }
  36. ....
Текст ошибки:
Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll Дополнительные сведения: startIndex должен быть меньше, чем длина строки.
Где может крытся баг?

Решение задачи: «Ошибка "startIndex должен быть меньше, чем длина строки."»

textual
Листинг программы
  1. String.Format("{0},{1}.00{2};{3}", ConverToString(alpha.X).Length>4? ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы