Нужны нормальные кубики для выполнения циклов.

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Сабж. Циклы с ограничением по счетчику, с условиями выхода и ошибки и так далее.
А то приходится лепить целую стену кубиков - это очень неудобно.
 

jkarsak37428

Client
Регистрация
20.12.2015
Сообщения
137
Благодарностей
11
Баллы
18
Switch не?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
22 609
Благодарностей
10 108
Баллы
113
Сабж. Циклы с ограничением по счетчику, с условиями выхода и ошибки и так далее.
А то приходится лепить целую стену кубиков - это очень неудобно.
ПКМ по нужному кубику и через контекстное меню создать группу экшенов цикла со счетчиком..
мне кажется, что вроде не оч. трудозатратно..
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
ПКМ по нужному кубику и через контекстное меню создать группу экшенов цикла со счетчиком..
мне кажется, что вроде не оч. трудозатратно..
Ну так и получается все та же стена кубиков, о которой я и говорил. Эта функция реализована стандартными средствами. Реализовать в виде того же блока это было в десятки раз удобнее как в плане создания циклов, так и в плане их дальнейшего редактирования.
Например, надо 2 кубика закинуть цикл. Объединяем его в блок-цикл, кликаем по этикетке блока и открывается настройка цикла. И НИЧЕГО лишнего, помимо зацикленной части
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 731
Благодарностей
1 083
Баллы
113
ИМХО, в зенке и так нормально циклы делаются.
нахрена улучшать то, что и так хорошо?
 
  • Спасибо
Реакции: one и orka13

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 140
Баллы
113
Если хотите меньше кубиков, пишите в коде.

Как пример для для кубиков со скрина из первого поста:
C#:
string text = "Замечены подозрительные попы"; // текст, который нужно искать на странице
int count = 10; // макс. кол-во выполнений цикла (кол-во попыток найти текст)

for (int i = 0; i < count; i++) {
    if (Regex.Match(instance.ActiveTab.PageText, text).Success) {
        return "ok"; // тут выполнение каких-то действий, если текст найден. В данном случае - выход по зелёной
    }
    Thread.Sleep(1 * 1000); // тут выполнение каких-то действий, пока не нашли текст. В данном случае - пауза 1 сек.
}
throw new Exception(); // если текст не найден, выход по красной
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Если хотите меньше кубиков, пишите в коде.

Как пример для для кубиков со скрина из первого поста:
C#:
string text = "Замечены подозрительные попы"; // текст, который нужно искать на странице
int count = 10; // макс. кол-во выполнений цикла (кол-во попыток найти текст)

for (int i = 0; i < count; i++) {
    if (Regex.Match(instance.ActiveTab.PageText, text).Success) {
        return "ok"; // тут выполнение каких-то действий, если текст найден. В данном случае - выход по зелёной
    }
    Thread.Sleep(1 * 1000); // тут выполнение каких-то действий, пока не нашли текст. В данном случае - пауза 1 сек.
}
throw new Exception(); // если текст не найден, выход по красной
А если определений несколько? Либо одно, либо другое, либо третье?
string text = "(Определение1|Определение2|Определение3)";
Так делать надо, да?
А как передать найденное значение в переменную?
project.Variables["Response"].Value = "Здесь что писать?";
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 140
Баллы
113
Так делать надо, да?
Верно! Можно без скобок.
А как передать найденное значение в переменную?
project.Variables["Response"].Value = Regex.Match(instance.ActiveTab.PageText, text).Value;
Но лучше тогда сократить:
C#:
string text = "Определение1|Определение2|Определение3";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.PageText, text);
    if (m.Success) {
        project.Variables["Response"].Value = m.Value;
        return "ok";
    }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
 

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