Помогите, выдает ошибку.

Андрес

Client
Регистрация
26.03.2017
Сообщения
46
Благодарностей
1
Баллы
8
Приветствую. Есть код, но выдает ошибку
Выполнение действия CSharp OwnCode. Входная строка имела неверный формат.

C#:
 int stroka = Convert.ToInt32(project.Variables["Stroka_tablici"].Value);
var sourceTable = project.Tables["Таблица 2"];
   
lock(SyncObjects.TableSyncer)
lock(SyncObjects.ListSyncer)

   
for(int i=0; i<6 ; i++)
{
   
   sourceTable.SetCell(i+1, stroka , project.Lists["Vremenniy"][0].Trim());
   project.Lists["Vremenniy"].RemoveAt(0);

}
Нужно взять строку из списка, и положить в ячейку таблицы, а потом строку списка удалить.
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 802
Баллы
113
Скорее всего проблема в первой строке. Проверьте, что в project.Variables["Stroka_tablici"].Value находится целое число.
 
  • Спасибо
Реакции: Андрес

Андрес

Client
Регистрация
26.03.2017
Сообщения
46
Благодарностей
1
Баллы
8
Поставил значение 1, выдало такое
Выполнение действия CSharp OwnCode. Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 802
Баллы
113
Поставил значение 1, выдало такое
Выполнение действия CSharp OwnCode. Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
В списке или таблице нет строки\столбца с указанным индексом.

Плюс у Вас не блокируется выполнение кода - нет фигурных скобок от lock'ов вокруг цикла.
И, на мой взгляд, лучше создать один новый объект для блокировки и использовать его. Как это сделать можно почитать здесь.
 
  • Спасибо
Реакции: Андрес

Андрес

Client
Регистрация
26.03.2017
Сообщения
46
Благодарностей
1
Баллы
8

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 802
Баллы
113
  • Спасибо
Реакции: Андрес

Андрес

Client
Регистрация
26.03.2017
Сообщения
46
Благодарностей
1
Баллы
8
По разному, может быль, а может меньше. Понял, нужно брать длину списка и от этого плясать.
for(int i=0; i< list.Count ; i++)
Спасибо за помощь.
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 802
Баллы
113
Понял, нужно брать длину списка и от этого плясать?
Да, конечно, нужно учитывать длину списка. Иначе будут сыпаться ошибки "Индекс за пределами диапазона", т.к. фактически список пустой, но идёт попытка взять значение.
 
  • Спасибо
Реакции: Андрес

prodox

Client
Регистрация
28.08.2018
Сообщения
280
Благодарностей
55
Баллы
28
Почему даже номер строки не показывает а коде?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)