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

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
да, спасибо!
 

iblohin

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

Код:
var table = project.Tables["base"];
for(int i = 0; i < table.RowCount; i++)
{
    int col_num = 0; //порядковый номер колонки
    string cur_string = table.GetCell(col_num,i); //текущая строка которую обрабатываем
    //project.SendInfoToLog(cur_string);
    if(cur_string.Contains(project.Variables["partSite"].Value))
    {
     
        return "true";
    }
}
return "false";
Сейчас сниппет ищет в таблице в указанном столбце ячейку, которая содержит переменную и если находит, говорит тру, если нет - фалс. А нужно, чтобы если находит, то выводил бы номер строки
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Ребята, надо отредактировать сниппет:

Код:
var table = project.Tables["base"];
for(int i = 0; i < table.RowCount; i++)
{
    int col_num = 0; //порядковый номер колонки
    string cur_string = table.GetCell(col_num,i); //текущая строка которую обрабатываем
    //project.SendInfoToLog(cur_string);
    if(cur_string.Contains(project.Variables["partSite"].Value))
    {
    
        return "true";
    }
}
return "false";
Сейчас сниппет ищет в таблице в указанном столбце ячейку, которая содержит переменную и если находит, говорит тру, если нет - фалс. А нужно, чтобы если находит, то выводил бы номер строки
C#:
var table = project.Tables["Tables1"];

for(int i = 0; i < table.RowCount; i++)
{
    string cur_string = table.GetCell(0 ,i);

    if(cur_string.Contains(project.Variables["partSite"].Value))
    {
     
        return i.ToString();
    }
}
return "false";
 
  • Спасибо
Реакции: phirelli и iblohin

iblohin

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Забыл написать, совпадение с переменной должно быть не частичным, а точным. Сейчас и в моем сниппете тоже частичное совпадение, а нужно точное
что подразумевается под не частичным ?
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Ну, например, в переменной "Casio" а в Таблице есть "Casio Наручные", и сниппет отдает порядковый номер строки. А нужно, чтобы он шел дальше, пока не найдет просто "Casio", и только тогда отдаст номер строки той ячейки, у которой совпадение с переменной точное
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Ну, например, в переменной "Casio" а в Таблице есть "Casio Наручные", и сниппет отдает порядковый номер строки. А нужно, чтобы он шел дальше, пока не найдет просто "Casio", и только тогда отдаст номер строки той ячейки, у которой совпадение с переменной точное
C#:
var table = project.Tables["Tables1"];
for(int i = 0; i < table.RowCount; i++)
{
    string cur_string = table.GetCell(0 ,i);
    if(cur_string == project.Variables["partSite"].Value)
    {
     
        return i.ToString();
    }
}
return "false";
 
  • Спасибо
Реакции: luk911, samsonnn и iblohin

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 340
Благодарностей
298
Баллы
83
Не могу понять, как заставить выйти по красной в случае, если кнопки на странице нет
Код:
HtmlElement element = tab2.FindElementByXPath(".//input[@id='bonus']", 0).Click();
if (element.IsVoid) return null;
Нашёл код, но ПМ обзывается вот такими словами: "Компиляция кода Ошибка в действии 'CS0029" "Неявное преобразование типа "void" в "ZennoLab.CommandCenter.HtmlEement невозможно". [Строка: 16; Столбец: 23]"
Как исправить?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Код:
HtmlElement element = tab2.FindElementByXPath(".//input[@id='bonus']", 0);
if (element.IsVoid) return null;
 
  • Спасибо
Реакции: Valiksim

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 340
Благодарностей
298
Баллы
83
Код:
HtmlElement element = tab2.FindElementByXPath(".//input[@id='bonus']", 0);
if (element.IsVoid) return null;
По красной пошло. А чтобы нажалось на кнопку, если есть кнопка, и пошло выполнение вперёд, к следующему коду, не знаю как сделать
P.S. Ура! решил сам через else
 
Последнее редактирование:

iblohin

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

Есть таблица с 1 столбцом, в котором произвольный текст. Нужно сделать дубль столбца, в котором разделить фразы по словам, свести в один столбец, и удалить повторения. Таким образом, получится 2 столбца в таблице, в первом - только одно слово, а во втором можно найти фразу, в котором это слово встречается.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Помогите пожалуйста с таким сниппетом:

Есть таблица с 1 столбцом, в котором произвольный текст. Нужно сделать дубль столбца, в котором разделить фразы по словам, свести в один столбец, и удалить повторения. Таким образом, получится 2 столбца в таблице, в первом - только одно слово, а во втором можно найти фразу, в котором это слово встречается.
а где произвольный текст ??? если он уже есть значит он в первом столбце, ты как то немного не понятно объясняешь, ты примеры показывай что есть и что надо

P.S. и нафик ты таблицами заморочился, если строк будет милион у тебя ошибки будут сыпаться, так как в таблицу дольше записывается, это надо ставить паузы
 
Последнее редактирование:

iblohin

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

А смысл такой. До обработки (1 столбец):

Произвольный текст
Любой текст
Случайный текст

После обработки (2 столбца):

Произвольный | Произвольный текст
Любой | Любой текст
Случайный | Случайный текст
текст |

То есть, мы взяли первый столбец, разбили текст по словам, потом все объединили в один столбец, получилось:

Произвольный
текст
Любой
текст
Случайный
текст

ну а после удаления дублей получилось то, что выше в итоговом варианте.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
зачем делать лишние действия не пойму, сначала лежит текст какой то произвольный, потом получается надо делать изменение ячейки, так текст занеси текстовик и брав уже оттуда формируй таблицу
 

iblohin

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Сори, мы наверное не поняли друг друга, и это наверное моя вина, где-то я не так выразился. Изначально мне нужен был сниппет, который берет таблицу, делает дубль первого столбца, и с этой копией совершает преобразования и на выходе отдает преобразованный столбец (где исходный текст разбит по словам, удалены дубли и все сведено в 1 столбец), и рядом - не преобразованный, исходный.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Сори, мы наверное не поняли друг друга, и это наверное моя вина, где-то я не так выразился. Изначально мне нужен был сниппет, который берет таблицу, делает дубль первого столбца, и с этой копией совершает преобразования и на выходе отдает преобразованный столбец (где исходный текст разбит по словам, удалены дубли и все сведено в 1 столбец), и рядом - не преобразованный, исходный.
зачем менять местами, перезаписывать для чего ??
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Для более удобного восприятия того самого произвольного текста. Потом с полученным результатом нужно будет работать, читая не текст а слова, и при желании (когда найдено подозрительное слово), нужно будет иметь возможность быстро провести поиск по второму столбцу с исходным текстом чтобы посмотреть фразы, в которых встречается это слово, но это уже я описал немного за рамками сниппета. Просто я не знаю как реализовать имено этот функционал. В экселе эти действия делаются достаточно быстро (Данные->Текст по столбцам с разделителями, разделитель пробел-> потом свести в один столбец, потом Данные->удалить дубли)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
покажи скринами как должно быть, до и после, и имено скрин с таблицей, или я не проснулся или весна так действует что я догнать не могу ))
 

iblohin

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

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
сразу результат. а на входе был просто один столбец произвольного текста (который сейчас второй, справа)
аха сейчас догнал, только у меня опять ворос один, зачем перезаписывать если можно произвольный сразу записывать во вторую колонку
 

iblohin

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

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
C#:
string [] lists = new [] {"Список 1", "Список 2", "Список N"};
foreach (var list in lists){
    project.Lists[list].Clear();  
}
А как удалить здесь дубли, и 2-е - как записать значение из переменной в каждый список.
Спасибо.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ты прав, возможно стоит переобдумать логику шаба. Ведь и действительно может быть миллион строк. А как еще можно работать? С базами данных? Вместо таблиц

А смысл такой. До обработки (1 столбец):

Произвольный текст
Любой текст
Случайный текст

После обработки (2 столбца):

Произвольный | Произвольный текст
Любой | Любой текст
Случайный | Случайный текст
текст |

То есть, мы взяли первый столбец, разбили текст по словам, потом все объединили в один столбец, получилось:

Произвольный
текст
Любой
текст
Случайный
текст

ну а после удаления дублей получилось то, что выше в итоговом варианте.
C#:
int index = 0;

var sourseList = new List<string>();
var outputList = new List<string>();

var table = project.Tables["Tables1"];

for(int i = 0; i < table.RowCount; i++)
{
    index++;
    var cells = table.GetCell(1, i);
 
    var rezult = cells.Split(new String [] {" "}, StringSplitOptions.RemoveEmptyEntries);
    sourseList.AddRange(rezult);
}

sourseList.Where(s=>!string.IsNullOrWhiteSpace(s))
          .Distinct().ToList().ForEach(s=>outputList.Add(s.Trim()));

for(int i = 0; i < outputList.Count; i++)
{
    if (index <= i)
    {
        table.AddRow("");
    }
 
    var str = outputList[i];
    table.SetCell("A", i, str);
}
2017-03-07_170347.png
 
  • Спасибо
Реакции: iblohin

iblohin

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

infosimple

Client
Регистрация
01.01.2015
Сообщения
422
Благодарностей
61
Баллы
28
Подниму еще раз нерешенную проблему. Есть ли возможность прочитать весь ответ PUT запроса с ошибочным заголовком. Прикладываю рабочий код, который отдает верную ошибку. Только необходимо выдернуть содержание ответа
C#:
string cookie = "unsupported_browsers_notif=true; _ga=GA1.2.1474281938.1488966463; language=en; express:sess=eyJ1c2VybmFtZSI6InNpZWJ1dGdlb2dvbDE5ODIiLCJzZXNzaW9uSWQiOiJlYTUzMjE1N2EyYmVlNTg4MGJjZTRiNWVlM2YzNDdiODQ2ZGZiYjc5NWFmZDg1NDYxN2RjMWQ3MjQwZWE0YmFhIiwic2V0dGluZ3MiOnsic291bmRzRW5hYmxlZCI6dHJ1ZSwiY2FsbGluZ0VuYWJsZWQiOmZhbHNlfX0=; express:sess.sig=j_S-TERnecHiso0ZaslmywGsktk; newUser.siebutgeogol1982=new; NREUM=s=1488966487418&r=46884&p=0; _gat=1";
string useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)";
 
  var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.textnow.com/api/users/siebutgeogol1982/phone?strict=0");
  httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  httpWebRequest.Method = "PUT";
  httpWebRequest.Headers.Add("Cookie", cookie);
  httpWebRequest.UserAgent =  useragent;

  using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
  {
  string json = "json=%7B%22area_code%22%3A%22912%22%7D";
  streamWriter.Write(json);
  }
  var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
  using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
  {
  var responseText = streamReader.ReadToEnd();
       return responseText;
  }
 

Se0mashines

Client
Регистрация
05.02.2012
Сообщения
209
Благодарностей
52
Баллы
28
Сообщение удалено...
 
Последнее редактирование:

infosimple

Client
Регистрация
01.01.2015
Сообщения
422
Благодарностей
61
Баллы
28
Подниму еще раз нерешенную проблему. Есть ли возможность прочитать весь ответ PUT запроса с ошибочным заголовком. Прикладываю рабочий код, который отдает верную ошибку. Только необходимо выдернуть содержание ответа
C#:
string cookie = "unsupported_browsers_notif=true; _ga=GA1.2.1474281938.1488966463; language=en; express:sess=eyJ1c2VybmFtZSI6InNpZWJ1dGdlb2dvbDE5ODIiLCJzZXNzaW9uSWQiOiJlYTUzMjE1N2EyYmVlNTg4MGJjZTRiNWVlM2YzNDdiODQ2ZGZiYjc5NWFmZDg1NDYxN2RjMWQ3MjQwZWE0YmFhIiwic2V0dGluZ3MiOnsic291bmRzRW5hYmxlZCI6dHJ1ZSwiY2FsbGluZ0VuYWJsZWQiOmZhbHNlfX0=; express:sess.sig=j_S-TERnecHiso0ZaslmywGsktk; newUser.siebutgeogol1982=new; NREUM=s=1488966487418&r=46884&p=0; _gat=1";
string useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)";

  var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.textnow.com/api/users/siebutgeogol1982/phone?strict=0");
  httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  httpWebRequest.Method = "PUT";
  httpWebRequest.Headers.Add("Cookie", cookie);
  httpWebRequest.UserAgent =  useragent;

  using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
  {
  string json = "json=%7B%22area_code%22%3A%22912%22%7D";
  streamWriter.Write(json);
  }
  var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
  using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
  {
  var responseText = streamReader.ReadToEnd();
       return responseText;
  }
Проблему сам решил, всем спасибо.
 

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
354
Благодарностей
56
Баллы
28
Прошу помощи. Шаблон запускается каждый час. Он читает txt, в котором подсчитывает количество строк и это количество выставляет в число попыток.

Шаблон с этим кодом запускает шаблон Privet tries число раз:
Код:
var tries = File.ReadAllLines(@"C:\test\test.txt", Encoding.UTF8).Length;
ZennoPoster.AddTries("Privet", tries);
Получается для запуска одного шаблона (Privet.xmlz) требуется еще один шаблон (test.xlmz) с кодом выставления числа попыток, иначе шаблон будет выполняться бесконечное число раз. Это не удобно.
Возможно ли сделать проставления числа попыток в одном шаблоне, чтобы он не зацикливался?
Наверное можно как-то построить условие, по которому будут или не будут добавляться попытки. Например создавать файл или запись в глобальной переменной, чтобы было добавлено число попыток и очищать этот файл или глобальную переменную, тогда когда это требуется, но к сожалению не владею пока кодом :(
 

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