Помогите с табличкой плиз

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Всем привет.
Только начал изучать c#, поэтому прошу помидорами не закидывать:-)
Сделал такой код:
C#:
lock(SyncObjects.TableSyncer){
  
    // берем первую строку с удалением и раскидываем значения по переменным
    var row = project.Tables["Data"].GetRow(project.Variables["keyword"].Value).ToList();
    project.Tables["Data"].DeleteRow(project.Variables["keyword"].Value);
    project.Variables["key"+project.Variables["counter"].Value].Value = row[0];
    project.Variables["ssilka"+project.Variables["counter"].Value].Value = row[1];   
}

// тут что-то делаем с полученными из таблицы данными

// возвращаем строку в конец списка
lock(SyncObjects.TableSyncer){
    project.Tables["Data"].AddRow(project.Variables["key"+project.Variables["counter"].Value].Value+"\t"+project.Variables["ssilka"+project.Variables["counter"].Value].Value);
}
Задача: брать из таблички нужное ключевое слово, которое сейчас находится в переменной keyword, соответственно в переменную key пишется значение которое ему соответствует.
Но, при попытке указать именно так, у меня лезет ошибка:
Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "int" невозможно". [Строка: 3; Cтолбец: 45] (там где сейчас keyword указана) и вторая строка с ним также соотв.

Не оч понял почему именно такая ошибка лезет - все значения в переменных строковые. Int только counter
Вроде бы все просто - нужно указать так Int32.Parse перед строкой с keyword, но тогда лезет ошибка "входная строка имела неверный формат". Как правильно все таки? Перед переменной с keyword указать перевод в стринг? Строковая переменная она
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Изменил код вот так:
C#:
lock(SyncObjects.TableSyncer){
 
    // берем первую строку с удалением и раскидываем значения по переменным
    var row = project.Tables["Data"].GetRow(Int32.Parse(project.Variables["keyword"].Value)).ToList();
    //project.Tables["Data"].DeleteRow(Int32.Parse(project.Variables["keyword"].Value));
    project.Variables["key"+project.Variables["counter"].Value].Value = row[0];
    project.Variables["ssilka"+project.Variables["counter"].Value].Value = row[1];  
}

// тут что-то делаем с полученными из таблицы данными

// возвращаем строку в конец списка
lock(SyncObjects.TableSyncer){
    project.Tables["Data"].AddRow(project.Variables["key"+project.Variables["counter"].Value].Value+"\t"+project.Variables["ssilka"+project.Variables["counter"].Value].Value);
}
Теперь выдается ошибка. Даже номер строки не написан (
Выполнение действия CSharp OwnCode: Берем строку из таблицы + кладем в переменные. Входная строка имела неверный формат.

Какая? где? строка, не пойму
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "int" невозможно". [Строка: 3; Cтолбец: 45] (там где сейчас keyword указана) и вторая строка с ним также соотв.
Метод GetRow() в качестве параметра принимает int, т.е. номер строки, а в него пихается string. Отсюда и ошибка, от непонимания как это работает.
43020
Поэтому для начала почитать документацию и посмотреть примеры на форуме.
 
  • Спасибо
Реакции: Yuriy Zymlex

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Метод GetRow() в качестве параметра принимает int, т.е. номер строки, а в него пихается string. Отсюда и ошибка, от непонимания как это работает.
Поэтому для начала почитать документацию и посмотреть примеры на форуме.
Спасибо. Решил вопрос
 

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