Бесплатные снипеты на заказ

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Подскажите пожалуйста еще сниппет на удаление последних 3 строчек из списка
C#:
IZennoList list = project.Lists["List"];
int count = 3; // количество удаляемых строк
lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < count; i++)
        list.RemoveAt(list.Count - 1);
}
 
  • Спасибо
Реакции: iblohin

AvvaddoN

Client
Регистрация
21.01.2017
Сообщения
13
Благодарностей
0
Баллы
1

AvvaddoN

Client
Регистрация
21.01.2017
Сообщения
13
Благодарностей
0
Баллы
1
Код:
IZennoList list = project.Lists["Clear_price"];
int[] num = Array.ConvertAll(list.ToArray(), int.Parse);
Блин, один раз отработало на тесте, теперь ругается "входная строка имела неверный формат".
Посмотрел список - пробел после последней цифры в каждой строке.

Причем, прогонял список на удаление {-String.Space-} и Trim всех символов пробельных в начале и конце. Все равно в списке остается пробел. Видать из-за этого и ругается.
http://joxi.ru/9E2pPlBCPZz42Y

Как можно почистить этот гадкий пробел? Чтобы только числа остались?
 
Последнее редактирование:

AvvaddoN

Client
Регистрация
21.01.2017
Сообщения
13
Благодарностей
0
Баллы
1
Хм... заменил кубики обработки текста на снипет:
Код:
string trimer = project.Variables["TMP_transit_price"].Value;

trimer = trimer.Replace(" ","");
trimer = trimer.Replace("&nbsp;","");
trimer = trimer.Trim();

int res = Int32.Parse(trimer);
project.Variables["TMP_transit_price"].Value = Convert.ToString(res);
без конверта в int - вылетали с пробелом на конце, после конверта - нормальный список.
наверное, топорный вариант, но теперь работает.

Если подскажете, как красиво сделать - буду благодарен =)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Если подскажете, как красиво сделать - буду благодарен =)
C#:
string str = project.Variables["TMP_transit_price"].Value;
return Regex.Replace(str, @"\s", "");
или
C#:
string str = project.Variables["TMP_transit_price"].Value;
return Regex.Match(str, @"\d+").Value;
 
  • Спасибо
Реакции: samsonnn и AvvaddoN

AvvaddoN

Client
Регистрация
21.01.2017
Сообщения
13
Благодарностей
0
Баллы
1

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 286
Баллы
113
Есть у кого сниппет эмуляции мышки (из последних обнов) ?
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Помогите пожалуйста с 2 сниппетами:

1) Создает в списке последовательность чисел от 0 до значения в переменной "A". Например, если в переменной указано число 1500, то сниппет создает список:
0
1
2
...
1499
1500

2) Ищет в списке, который будет создан первым сниппетом (то есть всегда будут только числа по одному в столбик от 0 до числа из переменной), число из переменной "B". Если находит - удаляет строку с числом, если не находит, возвращает ошибку.

ребята, заранее спасибо!
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
389
Баллы
63
Помогите пожалуйста с 2 сниппетами:

1) Создает в списке последовательность чисел от 0 до значения в переменной "A". Например, если в переменной указано число 1500, то сниппет создает список:
0
1
2
...
1499
1500

2) Ищет в списке, который будет создан первым сниппетом (то есть всегда будут только числа по одному в столбик от 0 до числа из переменной), число из переменной "B". Если находит - удаляет строку с числом, если не находит, возвращает ошибку.

ребята, заранее спасибо!
Код:
var list = project.Lists["test"];//список куда пишем счет
var num = project.Variables["count"].Value;//ваша переменная в проекте - кол-во строк
int count = int.Parse(num);
bool check = true;

list.Clear();
lock (SyncObjects.ListSyncer) {
 for(int i=0;i<count;i++)
 {
     list.Add(i.ToString());//пишем номер в список
 }
}
var search_number = project.Variables["search_number"].Value;// берем из переменной номер, который надо искать
lock (SyncObjects.ListSyncer) {
 for(int ig=0; ig < list.Count; ig++)
 {
    var str = list[ig];// читаем строку из списка
    if (str.Contains(search_number))
    {list.RemoveAt(ig);check = false;}
 }
}
if(check){return null;}
return "ок";
 
Последнее редактирование:
  • Спасибо
Реакции: iblohin

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Санек, сасибо! мне это нужно в виде двух разных сниппетов, я правильно понимаю, что с первой по 11 строчки это первый сниппет, а с 13 по 21 строчки это второй и я могу их разделить по этой границе, чтобы они отдельно работали?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Помогите пожалуйста с 2 сниппетами
C#:
IZennoList list = project.Lists["List"];
int count = int.Parse(project.Variables["A"].Value) + 1;
var num = Enumerable.Range(0, count).Select(x => x.ToString());
list.Clear(); // если нужно очищать список
list.AddRange(num);
C#:
IZennoList list = project.Lists["List"];
string str = project.Variables["B"].Value;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        if (list[i] == str) {
            list.RemoveAt(i);
            return "ok";
        }
    }
    return null;
}
 
Последнее редактирование:
  • Спасибо
Реакции: iblohin

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
389
Баллы
63
Санек, сасибо! мне это нужно в виде двух разных сниппетов, я правильно понимаю, что с первой по 11 строчки это первый сниппет, а с 13 по 21 строчки это второй и я могу их разделить по этой границе, чтобы они отдельно работали?
да верно... у Dimionix код бери там по продвинутее написанно, тем более я забыл залочить для многопотока... щас поправлю.
 
  • Спасибо
Реакции: iblohin

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Есть у кого снипет, который сортирует таблицу по столбцу с числами?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

Samoylov_83

Client
Регистрация
25.08.2015
Сообщения
229
Благодарностей
70
Баллы
28
Есть у кого сниппет, который обрежет картинку в base64 со всех сторон не сохраняя ее на диск и на выходе также будет base64?
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Добрый день, есть код
System.Windows.Forms.MessageBox.Show("123");

как его модифицировать чтобы там еще было поле, куда вбиваешь значение и оно складывается в переменную
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
926
Баллы
93

vitorrio

Client
Регистрация
13.03.2016
Сообщения
76
Благодарностей
21
Баллы
8
1. Вопрос как узнать количество найденных элементов. В js очень просто, свойство count.
C#:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "First", "regexp", 0);
if (he.IsVoid) return -1;
В конструкторе действий он тоже узнает количество.
А пока сделал костыль в виде опроса на элемент isVoid в цикле.

2. Как установить пол через C#.
Пробовал так
C#:
if (reader["Sex"].ToString()== "Female") project.Profile.Sex = false;
//###################
ProfileSex Sex = ProfileSex;
            if (reader["Sex"].ToString()= "Female") Sex = ProfileSex.Female;
            else
                Sex = ProfileSex.Male;
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
1. Вопрос как узнать количество найденных элементов. В js очень просто, свойство count.
C#:
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "class", "First", "regexp", 0);
if (he.IsVoid) return -1;
В конструкторе действий он тоже узнает количество.
А пока сделал костыль в виде опроса на элемент isVoid в цикле.

2. Как установить пол через C#.
Пробовал так
C#:
if (reader["Sex"].ToString()== "Female") project.Profile.Sex = false;
//###################
ProfileSex Sex = ProfileSex;
            if (reader["Sex"].ToString()= "Female") Sex = ProfileSex.Female;
            else
                Sex = ProfileSex.Male;
1. FindElementsByAttribute имеет свойство count
2. project.Profile.Sex = ZennoLab.InterfacesLibrary.ProjectModel.Enums.ProfileSex.Female;
 
  • Спасибо
Реакции: vitorrio

vitorrio

Client
Регистрация
13.03.2016
Сообщения
76
Благодарностей
21
Баллы
8
Проверьте пожалуйста, только у меня одного не работает?
C#:
project.Profile.UserAgentAppVersion = reader["UserAgentAppVersion"].ToString();
 

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
Подскажите плиз, надо прокрутить страницу вниз больше сотни раз, сейчас пользуюсь тем что в коде 100 строчек на прокрутку, хотелось бы как-то решить через цикл количество которых я могу сам выставлять.
Спасибо.
Код:
instance.WaitFieldEmulationDelay();
// Эмулировать ввод текста один раз
instance.SendText("{END}", 15);
// Эмулировать ввод текста несколько раз
instance.SendText("{END}", 15);
instance.SendText("{END}", 15);
instance.SendText("{END}", 15);
instance.SendText("{END}", 15);
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 761
Благодарностей
1 432
Баллы
113
Подскажите плиз, надо прокрутить страницу вниз больше сотни раз, сейчас пользуюсь тем что в коде 100 строчек на прокрутку, хотелось бы как-то решить через цикл количество которых я могу сам выставлять.
Спасибо.
как то так:
C#:
instance.WaitFieldEmulationDelay();
int a = 100; // сколько выполнить нажатий
for (int i = 0; i < a; i++){
instance.SendText("{END}", 15);
}
return "ok";
 
Последнее редактирование:

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Подскажите плиз, надо прокрутить страницу вниз больше сотни раз, сейчас пользуюсь тем что в коде 100 строчек на прокрутку, хотелось бы как-то решить через цикл количество которых я могу сам выставлять.
Спасибо.
C#:
instance.WaitFieldEmulationDelay();

int cnt = 10; // сколько будем нажимать енд

for(int i = 1; i<=cnt; i++){
    instance.SendText("{END}", 15);
    project.SendErrorToLog("Нажали ЭНД "+i.ToString()+" раз.",true);
}
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 280
Благодарностей
96
Баллы
48
Подскажите, а как сделать так, чтобы в алерте после нажатия кнопки ОК, новая инфа появлялась не в новом алерта, а именно в этом, т.е. содержание поменялось после того как нажал кнопку, например появилось поле для ввода, я что-то ввел, нажал ОК, оно снова поменялось тут же, а не новый алерт вылез
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
помогите пожалуйста написать 2 сниппета для обработки текста в переменной регулярками

Регулярки у меня такие:

1)Найти текст, и удалить все, что следует за ним, включая искомый текст. Например, из переменной Minor L-200 A776g/78G найти текст / и удалить все, что следует за ним, получив Minor L-200 A776g

2)Просто найти текст, и удалить его из текста переменной. Например, из переменной Minor L-200 A776g/78G найти текст "L-200 " (с пробелом!) и просто удалить его, получив: Minor A776g/78G (если удалим без пробела, то двойной пробел появится между Minor и A776g/78G, чего быть не должно)


и параллельно еще вопрос - текст самих регулярок в сниппете C# будет отличаться от текста регулярок, который выдает стандартный тестер регулярных выражений в ПМ? Если они одинаковы, то тогда можно сделать один универсальный сниппет, в который я буду подходящую регулярку подставлять из переменной? Это было бы самым лучшим вариантом!
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
помогите пожалуйста написать 2 сниппета для обработки текста в переменной регулярками
C#:
string input = project.Variables["Text"].Value; // текст
string pattern = project.Variables["Pattern"].Value; // регулярка (из Тестера рег. выражений)
string replacement = @"строка, на которую заменять";

// Замена по регулярке
return Regex.Replace(input, pattern, replacement);

// Regex
return Regex.Match(input, pattern).Value;
 
  • Спасибо
Реакции: Osminogus и iblohin

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
простите. немного не понял. Вот так я пишу сниппет без переменных (для проверки):

Код:
string input = "Minor L-200 A776g/78G"; // текст
string pattern = ".*(?=/)"; // регулярка (из Тестера рег. выражений)
string replacement = @"строка, на которую заменять";

// Замена по регулярке
return Regex.Replace(input, pattern, replacement);

// Regex
return Regex.Match(input, pattern).Value;
В результате работы сниппета ожидал получить: Minor L-200 A776g
сниппет отдал: строка, на которую заменятьстрока, на которую заменять/78G

мне непонятен смысл строки 4, если у меня регулярка .*(?=/) (убрать все, что после /), что на что тут подразумевается менять?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
мне непонятен смысл строки 4, если у меня регулярка .*(?=/) (убрать все, что после /), что на что тут подразумевается менять?
Если в результат нужно получить Minor L-200 A776g, то используй второй код (Regex), а предыдущую строку закомментируй или удали (это я просто не стал делить в два сниппета).
Или, если использовать первый код (Замена по регулярке), то регулярка должна быть /.* и заменять нужно на пустоту (оставить пустые кавычки).
 
  • Спасибо
Реакции: iblohin

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
http://zennolab.com/discussion/members/samsonnn.9894/
и
http://zennolab.com/discussion/members/zhag.7393/
Спасибо!
Если можно ещё вопрос. Надо собрать со страницы ID пользователей. Сейчас делаю так:
1.
Код:
//Прокручиваем страницу вниз
instance.WaitFieldEmulationDelay();
int a = 100; // сколько раз прокрутить
for (int i = 0; i < a; i++)
{
instance.SendText("{END}", 15);
}
return "ok";
2.
Код:
//Парсим регуляркой последнее  ID и ложим в переменную stet_1
Tab tab = instance.ActiveTab;
if (tab.IsBusy) tab.WaitDownloading();
string text = tab.DomText;
var regex = new System.Text.RegularExpressions.Regex(project.Variables["Regex"].Value);
// Поиск последнего совпадения
var matchCollection = regex.Matches(text);
if (matchCollection.Count != 0 && matchCollection[matchCollection.Count - 1].Success)
    project.Variables["stet_1"].Value = matchCollection[matchCollection.Count - 1].Value;
3.
Код:
//Сравниваем выпаршенное ID с начальным значением stet_2 (по умолчанию 0) и далее с предыдущим значением
int count_akk = int.Parse(project.Variables["stet_1"].Value);//в переменной число из проекта
int limit_num = int.Parse(project.Variables["stet_2"].Value);//в переменной число из проекта
if(count_akk == limit_num)
    {
return "ok";
}
return null;
4. Если stet_1=stet_2 то переходим к п.5, если нет, то опять к п.1 и так по кругу пока не попадем на п.5
Код:
// Перенос значения переменной stet_1 в переменную stet_2
project.Variables[ "stet_2"].Value = project.Variables[ "stet_1"].Value;
5.
Код:
//Парсим все значения ID и ложим в переменную GET
string text = instance.ActiveTab.DomText;
Regex reg = new Regex(project.Variables["Regex"].Value);
MatchCollection matches = reg.Matches(text);
List<string> tmpList = new List<string>();
for (int i = 0; i < matches.Count; i++)
{
    tmpList.Add(matches[i].Value);
}
return string.Join("\r\n", tmpList);
А как затолкать всё в один кубик.
Спасибо.
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Ребята, помогите пожалуйста написать на C# такой обработчик.

Нужно обрабатывать переменную Text регулярками, которые применяются к переменной по очереди. Количество регулярок задается в переменной Count, а сами регулярки и их последовательность задаются в таблице:
В столбце E задается количество применяемых регулярок (от 0 до 6). Если будет 0, то нужно завершить сниппет и дальше не идти
В столбце F задается тип регулярки: del, probel и regex. По сути это означает то, что нужно будет сделать: удалить, заменить на пробел и применить текст регулярки соответственно
В столбце G:
  • если тип регулярки del, задается то, что нужно удалить из Text (ну или заменить на пустоту "")
  • если тип регулярки probel, задается то, что в Text нужно заменить на пробел
  • если тип регулярки regex, то просто задается текст регулярного выражения из тестера регулярок ПМ
Если в столбце E указана цифра 1, то после применения регулярки, завершаем сниппет.

Если в столбце E указана цифра 2, то это означает, что регулярок к Text применяется 2, значит в таблице присутствуют значения в столбцах H и I, суть которых идентична значениям столбцов F и G. И так далее, если в столбце E указано 3, то после F и G идут еще два столбца по порядку, в первом из которых будет тип регулярки, а во втором что нужно удалить из Text, либо текст регулярного выражения, и так далее до 6. 6 я взял с запасом, это максимум, обычно 3-4 буду использовать.

На стандартных кубах зенки это жесть как громоздко
 
Последнее редактирование:

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