Как сохранить значение в переменной без сохранения его в файл?

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Доброго времени суток.

Меня заинтересовал такой вопрос, как можно сохранить число в переменной даже во время отключения шаблона.

Например 0/100 шаблон поработал и стало 15/100, после перезапуска шаблон сбрасывает все переменные, можно было бы подгрузить это значение из файла но мне это не подходит.

Это необходимо для установки суточного лимита, то есть шаб наберет 100 и больше не будет работать в этот день, и после полуночи скинет значение.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Она обнулиться тогда, когда закроете зенку ) Обнулять нужно самостоятельно
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Она обнулиться тогда, когда закроете зенку ) Обнулять нужно самостоятельно
А реально как то сохранить глобальную переменную, даже после закрытия ZennoPoster?
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
И она точно после конца суток будет обнулятся, я просто с глобальными переменными ещё не сталкивался.
можно сохранять в эту переменную не только прогресс но и дату. А в начале шаблона проверять, соответссвенно, не только прогресс, но и наступил ли новый день
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
В файл или базу данных )
Также можно в онлайне сохранить на http://pastebin.com/ или https://privnote.com/
В общем решил я переключиться на локальные переменные и проводить проверку по файлу, но столкнулся с проблемами, у меня зенно в начале нормально выполняло этот код потом перестало, и так периодически его дергает, может с кодом что то не так.
Код:
String sDate = DateTime.Now.ToString();
DateTime datevalue = (Convert.ToDateTime(sDate.ToString()));
String dy = datevalue.Day.ToString();
String mn = datevalue.Month.ToString();
String yy = datevalue.Year.ToString();
String now = dy+("-")+mn+("-")+yy;
return now;
С последним кодом вообще беда, хотя конвертировал int в string не работает.
Код:
String sDate = DateTime.Now.ToString();
int day = (int)DateTime.Now.Day;
int month = (int)DateTime.Now.Month;
int year = (int)DateTime.Now.Year;
string day1 = day.ToString();
return day1;
Думал второй вариант использовать так как в if проще сравнивать между двумя int но не судьба по ходу.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Может какой то баг так как даже из такого кода не возвращает значение, хотя раньше нормально это делало.
Код:
DayTime now = DayTime.Now.ToString();
return now;
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Может какой то баг так как даже из такого кода не возвращает значение, хотя раньше нормально это делало.
Код:
DayTime now = DayTime.Now.ToString();
return now;
Иногда бывает полезно закрыть проект и снова открыть. Блоки C# иногда глючат, типо ошибка. хотя ее нет.

Первый кусок вашего кода переделанный:
Код:
DateTime current = DateTime.Now;
string day = current.Day.ToString();
string month = current.Month.ToString();
string year = current.Year.ToString();      

string result = day + "-" + month + "-" + year;
return result;
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Может какой то баг так как даже из такого кода не возвращает значение, хотя раньше нормально это делало.
Код:
DayTime now = DayTime.Now.ToString();
return now;
Тут явная ошибка, поскольку тип переменной указан как DayTime а само значение вы переводите к строковому типу методом .ToString();

Исправленный кусок кода:
Код:
string now = DayTime.Now.ToString();
return now;
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
В общем решил я переключиться на локальные переменные и проводить проверку по файлу, но столкнулся с проблемами, у меня зенно в начале нормально выполняло этот код потом перестало, и так периодически его дергает, может с кодом что то не так.
Код:
String sDate = DateTime.Now.ToString();
DateTime datevalue = (Convert.ToDateTime(sDate.ToString()));
String dy = datevalue.Day.ToString();
String mn = datevalue.Month.ToString();
String yy = datevalue.Year.ToString();
String now = dy+("-")+mn+("-")+yy;
return now;
С последним кодом вообще беда, хотя конвертировал int в string не работает.
Код:
String sDate = DateTime.Now.ToString();
int day = (int)DateTime.Now.Day;
int month = (int)DateTime.Now.Month;
int year = (int)DateTime.Now.Year;
string day1 = day.ToString();
return day1;
Думал второй вариант использовать так как в if проще сравнивать между двумя int но не судьба по ходу.
не совсем понял, что тут хочешь сделать
но вот сниппет - возвращает текущую дату/время в нужном формате
Код:
return DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss");
MM, dd, yyyy, hh, mm, ss - формат неизменен
порядок устанавливай какой хочешь, можешь по отдельности, можешь все вместе, разделители тоже на твой вкус
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
не совсем понял, что тут хочешь сделать
но вот сниппет - возвращает текущую дату/время в нужном формате
Код:
return DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss");
MM, dd, yyyy, hh, mm, ss - формат неизменен
порядок устанавливай какой хочешь, можешь по отдельности, можешь все вместе, разделители тоже на твой вкус
Хочу сделать сравнение одной даты с другой.
Суть такая:
Шаб выполняет задание и во время задания набирает 15/100 единиц.
При следующем запуске шаб продолжает с 15 набирать дальше например 50/100 где 100 это суточный лимит.
При этом мне надо, чтобы изменяемое число то есть 50 каждый раз при запуске шаблона продолжалось с последнего своего значения, и сохранялось даже при перезапуске Постера, то есть глобальная переменная не особо подходит, по тому я вернулся к локальным но с сохранением файла.
По сути дела за сутки шаб набрал 100/100 и больше в этот день работать не будет, но после полуночи то есть когда дата измениться он снова начнет работать.
Для этого я пытаюсь создать С# проверку в if части сравнить дату созданного файла с текущей датой, которая в случае совпадения просто продолжит работу шаба с уже известным на сегодня значением то есть 50 и будет его увеличивать, а в случае не совпадения обнулит создаст новый файл с текущей датой и продолжит работу дальше уже с нового дня с обнуленным счетчиком.
Саму проверку хочу провести в C# так как думаю там можно проверить дату без текущего времени то есть без hh:mm:ss а чисто провести проверку по dd|mn|yyyy
А уже сам файл думаю создавать отдельно вставив название из DateTime.Now C# обработанное предварительно.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Тут явная ошибка, поскольку тип переменной указан как DayTime а само значение вы переводите к строковому типу методом .ToString();

Исправленный кусок кода:
Код:
string now = DayTime.Now.ToString();
return now;
Странно даже перезагрузка всего ProjectMaker не помогает может попустит его попозже.
Даже ваш скрипт не пропускает.
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
так в чем проблема, вот так поправил
return DateTime.Now.ToString("dd-MM-yyyy");

и получил дату в формате "день-месяц-год"
дальше сравнивай как строки
 
  • Спасибо
Реакции: Veterinar

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
так в чем проблема, вот так поправил
return DateTime.Now.ToString("dd-MM-yyyy");

и получил дату в формате "день-месяц-год"
дальше сравнивай как строки
Спасибо за ваш ответ в if блоке все сравнил все работает просто ProjectMaker глючил, C# код не хотел читать.
 
  • Спасибо
Реакции: dremniy

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Странно даже перезагрузка всего ProjectMaker не помогает может попустит его попозже.
Даже ваш скрипт не пропускает.
Только увидел опечатку, когда копипастил ваш код.
Вместо DayTime нужно указать DateTime =)
Код:
string now = DateTime.Now.ToString();
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Только увидел опечатку, когда копипастил ваш код.
Вместо DayTime нужно указать DateTime =)
Код:
string now = DateTime.Now.ToString();
А да я тоже заметил, просто код когда сюда постил не копировал, а так вводил по тому и опечатка. Там главная проблема была что ProjectMaker глючил, я даже толком коды потестить не мог, сейчас проверил все хорошо работает.
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Теперь над другим думаю как сложить все цифры из одной переменной.
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
а какое значение у переменной?
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
Код:
string b = project.Variables["tvoyaPeremennaya"].Value;
int a = int.Parse(b);
int units = a % 10; // единицы
int tens = a / 10; // десятки
return tens + units;
значение всегда двузначное число?
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Код:
string b = project.Variables["tvoyaPeremennaya"].Value;
int a = int.Parse(b);
int units = a % 10; // единицы
int tens = a / 10; // десятки
return tens + units;
Не совсем там в одном значении переменной много цифр идет в несколько строк, необходимо их сумму получить.
А как их адекватно в int перевести не представляю ведь они как один string в значении переменной стоят.
 

dremniy

Client
Регистрация
01.05.2014
Сообщения
34
Благодарностей
17
Баллы
8
Код:
string str = project.Variables["tvoyaPeremennaya"].Value;
int i = 0;
int sumDigits = 0;

while (i < str.Count())
{
    sumDigits = sumDigits + int.Parse(str.Substring(str.Count() - 1)); // получить последнюю цифру и сложить с предыдущей
    str = str.Remove(str.Count() - 1); // удалить из строки последнюю цифру
}

return sumDigits;
так попробуй
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Код:
string str = project.Variables["tvoyaPeremennaya"].Value;
int i = 0;
int sumDigits = 0;

while (i < str.Count())
{
    sumDigits = sumDigits + int.Parse(str.Substring(str.Count() - 1)); // получить последнюю цифру и сложить с предыдущей
    str = str.Remove(str.Count() - 1); // удалить из строки последнюю цифру
}

return sumDigits;
так попробуй
Не сработало, попробовал так же это решение изменив разделение между цифрами но тоже не сработало.
Код:
string inputString = project.Variables["counter"].Value;
string[] results = inputString.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
List<double> d = new List<double>();
d.AddRange(results.Select(x => Convert.ToDouble(x)));
return null;
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Код:
string str = project.Variables["tvoyaPeremennaya"].Value;
int i = 0;
int sumDigits = 0;

while (i < str.Count())
{
    sumDigits = sumDigits + int.Parse(str.Substring(str.Count() - 1)); // получить последнюю цифру и сложить с предыдущей
    str = str.Remove(str.Count() - 1); // удалить из строки последнюю цифру
}

return sumDigits;
так попробуй
Думаю превратить это все в Array и затем сложить все ячейки. Посмотрим как с этим справятся мои кривые пальцы.
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Вместо первой строки
Код:
string text = "\n\r\n\n1 \r\n 2 \n 3\n\n\n";
поставь свою переменную
Код:
string text = project.Variables["input"].Value;
Следующий код выполняет то, что нужно:
Код:
        string text = "\n\r\n\n1 \r\n 2 \n 3\n\n\n";
        string[] lines = text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
        int result = 0;
        foreach (string line in lines)
        {
            try
            {
                 int number = Int32.Parse(line.Trim());
                 result = result + number;
                 Console.WriteLine("Converted '{0}' to {1}.", line, number);
            }
            catch
            {
            }
        }
        return result;
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
В общем Array создать получилось, осталось понят что с ним делать
Код:
string myVar = project.Variables["counter"].Value;
string[] Str = new string[]{myVar};
 

Veterinar

Client
Регистрация
01.07.2016
Сообщения
194
Благодарностей
22
Баллы
18
Вместо первой строки
Код:
string text = "\n\r\n\n1 \r\n 2 \n 3\n\n\n";
поставь свою переменную
Код:
string text = project.Variables["input"].Value;
Следующий код выполняет то, что нужно:
Код:
        string text = "\n\r\n\n1 \r\n 2 \n 3\n\n\n";
        string[] lines = text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
        int result = 0;
        foreach (string line in lines)
        {
            try
            {
                 int number = Int32.Parse(line.Trim());
                 result = result + number;
                 Console.WriteLine("Converted '{0}' to {1}.", line, number);
            }
            catch
            {
            }
        }
        return result;
Нижайший поклон вам за вашу помощь в моей борьбе с кодом, с меня пиво могу Почтой России выслать.
 
  • Спасибо
Реакции: VerBin

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Нижайший поклон вам за вашу помощь в моей борьбе с кодом, с меня пиво могу Почтой России выслать.
Боюсь Почтой России не дойдет ) или дойдет уже, когда срок годности закончиться =)))
 

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