Как контролировать, произошло ли изменение списка в течении 50 секунд? с sharp

Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
Приветствую!
Уважаемые мастера и знающие!
Скажите пожалуйста, какой нужно код прописать на с sharp в PM.
У меня есть список созданный в разделе списков в ProjectMaker. Он изменяется каждые 40 секунд.
Как контролировать, произошло ли изменение списка в течении 50 секунд? с sharp

В таком действии или может по другому как-то.
1. Список изменился? Да. Значит записывается время обновления
Нет, значит выход по ошибке через 4-5 минут(рандомное время)
2. От записанного времени обновления списка, проверяется изменение списка на условие изменения в течении до 40 секунд
Если не изменен, тогда выход по ошибке через 4-5 минут(рандомное время)
Если было изменение, шаблон продолжает работу.
 
Последнее редактирование:

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Если не секрет почему именно C#? Реализуемо ведь стандартными кубиками
 
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
Если не секрет почему именно C#? Реализуемо ведь стандартными кубиками
Это тоже очень хорошо, что можно на них. Но как обстоит дело:
У меня проект весь прописан в одном кубике с sharp

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

А можно выходить из кубика с sharp в определенном месте, затем снова зайти в этот кубик в определенном месте?
 
Последнее редактирование:

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
Как вариант - список в переменную 1, пауза 50 сек, список в переменную 2, сравниваем две переменные.

Можно и на шарпе
C#:
List<string> ReadList(string listName)
{
    var list = project.Lists[listName];
    List<string> listContents = new List<string>();

    foreach (var item in list)
    {
        listContents.Add(item);
    }

    return listContents;
}
List<string> firstRead = ReadList("list1");
Thread.Sleep(50000);

List<string> secondRead = ReadList("list1");

bool areEqual = firstRead.SequenceEqual(secondRead);

if (areEqual)
{
    project.Variables["var1"].Value = "1";
}
else
{
    project.Variables["var1"].Value = "0";
}
 
  • Спасибо
Реакции: Биржевик
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
я в так никогда не писал в коде, можете в двух словах сказать что это значит?
List<string> ReadList(string listName) ?
как понять, чтобы дальше понимать что к чему
это мой список(который в разделе списков) укладывается в строку?
как задействовать этот код, у меня список Perem в разделе списков, куда это название подставить?

Код интересен, но не совсем то, пауза очень большая и непонятно как взять второй список после первого, третий после второго и т.д.
Работа кода в цикле, получается что за 1 проход цикла, я беру 1 новый список.
Как сделать в следующем:
Берем список, кладем в переменную, код работает далее 35 сек.
Затем берем новый список и тогда уже сравниваем с первым
Затем код идет далее и уже сравнивается третий список со вторым
Затем код идет далее и уже сравнивается четвертый список с третьим и т.д.

или пауза должна быть не явная, а другая, не зависимо от работы кода, чтобы срабатывала эта часть кода
Тогда не Sleep а Dream ?



Доп вопрос, переменные можно сравнивать всяко разно как и списки?
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
я в так никогда не писал в коде, можете в двух словах сказать что это значит?
List<string> ReadList(string listName) ?
как понять, чтобы дальше понимать что к чему
это мой список(который в разделе списков) укладывается в строку?
как задействовать этот код, у меня список Perem в разделе списков, куда это название подставить?

Код интересен, но не совсем то, пауза очень большая и непонятно как взять второй список после первого, третий после второго и т.д.
Работа кода в цикле, получается что за 1 проход цикла, я беру 1 новый список.
Как сделать в следующем:
Берем список, кладем в переменную, код работает далее 35 сек.
Затем берем новый список и тогда уже сравниваем с первым
Затем код идет далее и уже сравнивается третий список со вторым
Затем код идет далее и уже сравнивается четвертый список с третьим и т.д.

или пауза должна быть не явная, а другая, не зависимо от работы кода, чтобы срабатывала эта часть кода
Тогда не Sleep а Dream ?



Доп вопрос, переменные можно сравнивать всяко разно как и списки?
Если верно понял, ListName? это как раз и есть название моего списка
 
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
Может пойти таким путем, как тогда записать?
Данные в список получены, список записан в разделе списков, называется Perem
кладу его в переменную
код работает дальше, начинается новый цикл
Снова заполняется тот же список Perem
снова кладу его в ту же переменную, но при условии что данные списка для переменной другие, если данные в нем те же, тогда выхожу из проекта по ошибке, через рандомное время 1-2 минуты
 

gelu4

Client
Регистрация
11.01.2015
Сообщения
166
Благодарностей
42
Баллы
28
Можно смотреть изменилось ли количество строк в списке, можно смотреть к-во всех символов, если к-во строк не меняется, можно смотреть вес файла, если список привязан к файлу
 
  • Спасибо
Реакции: Биржевик
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
Можно смотреть изменилось ли количество строк в списке, можно смотреть к-во всех символов, если к-во строк не меняется, можно смотреть вес файла, если список привязан к файлу
Понимаю.
По кол-ву строк есть проверка но для другого случая. в данном случае всегда одинаковое количество строк
Количество символов очень часто совпадает.
вес наверное тоже будет один и тот же, если к примеру меняется слово "Слово" на слово "Опять", кол-во символов одинаковое
вес не измениться если два слова на строках просто поменяется местами, логично, но не факт что точно))
я поэтому и подумал, что нужно как то через время решать. т.е. через какое-то время изменился? другими данными список заполнен или нет

Как вот узнать, на новом проходе цикла, список другой или тот же самый?

как записать
идет цикл, получили список(Perem) - он получен и записан
сохраняю его в другой список или переменную
идет новый ход в цикле
список Perem чистится
получил новые данные в список(Perem) и сравнил с первым записанным списком(копией) или переменной
если разные данные, тогда их вношу в первую переменную или копию списка(с которым сверка), предварительно почистив
если одинаковые, заканчиваю работу шаблона

вопрос мой простой, но как записать, реализовать
При новом проходе по циклу, список изменился?
если да, шаблон продолжает работу
если нет - работу прерываем по ошибке
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
Благодарен всем за внимание и советы.
 
Последнее редактирование:
Регистрация
28.11.2020
Сообщения
58
Благодарностей
6
Баллы
8
как записать
идет цикл, получили список(Perem) - он получен и записан
сохраняю его в другой список или переменную
идет новый ход в цикле
список Perem чистится
получил новые данные в список(Perem) и сравнил с первым записанным списком(копией) или переменной
если разные данные, тогда их вношу в первую переменную или копию списка(с которым сверка), предварительно почистив
если одинаковые, заканчиваю работу шаблона
это то же не решит задачу

а если сделать сравнение списков именно построчно, тогда может подойти как вариант
как списки сравнить именно построчно?
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
554
Благодарностей
1 136
Баллы
93
Приветствую!
Уважаемые мастера и знающие!
Скажите пожалуйста, какой нужно код прописать на с sharp в PM.
У меня есть список созданный в разделе списков в ProjectMaker. Он изменяется каждые 40 секунд.
Как контролировать, произошло ли изменение списка в течении 50 секунд? с sharp

В таком действии или может по другому как-то.
1. Список изменился? Да. Значит записывается время обновления
Нет, значит выход по ошибке через 4-5 минут(рандомное время)
2. От записанного времени обновления списка, проверяется изменение списка на условие изменения в течении до 40 секунд
Если не изменен, тогда выход по ошибке через 4-5 минут(рандомное время)
Если было изменение, шаблон продолжает работу.
Привет.

Например, если список привязан к файлу, то можно получить данные из системы:
Получить данные о файле в системе:
string filePath = @"C:\ZLInstallerLog.log";
        
if (File.Exists(filePath))
{
    FileInfo fileInfo = new FileInfo(filePath);

    project.SendInfoToLog("Полный путь: " + fileInfo.FullName);
    project.SendInfoToLog("Имя файла: " + fileInfo.Name);
    project.SendInfoToLog("Размер файла (в байтах): " + fileInfo.Length);
    project.SendInfoToLog("Время создания: " + fileInfo.CreationTime);
    project.SendInfoToLog("Время последнего доступа: " + fileInfo.LastAccessTime);
    project.SendInfoToLog("Время последнего изменения: " + fileInfo.LastWriteTime);
    project.SendInfoToLog("Атрибуты файла: " + fileInfo.Attributes);
}
else
{
    project.SendErrorToLog("Файл по пути " + filePath + " не существует.");
}
Надеюсь это было полезно :bs:

Приложил шаблон для проверки ↓
 

Вложения

  • Спасибо
Реакции: Биржевик

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