Как обратиться к глобальной переменной в c# коде?

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
Как обратиться к глобальной переменной в c# коде?
Например переменная "glob", пространство имен "abc"
 

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
project.GlobalVariables["abc", "glob"]
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
  • Спасибо
Реакции: impul5e

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
в этой теме давали ссылку на шаблон с глобальными переменными:
http://zennolab.com/discussion/threads/ocherednoj-vopros-o-globalnyx-peremennyx.26544/
Именно по нему я удачно научился как их применять. Советую.
Если проект прервать и начать заного - этот сниппет перестает работать почему то, нужно именно саму Зенку перезапускать
 

ssXXXss

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

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
минус что зенку надо перезапускать
Неужели нет переменных, возвращающих значение текущего потока?
За столько лет разрабы не увидели причины такую переменную сделать...
 

ssXXXss

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

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
а при чём переменая окружения и глобалка, а если я в C# глобалку создал ?
С термином "окружения" я ошибся. Если в C# глобалку создать , она лучше будет работать?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
С термином "окружения" я ошибся. Если в C# глобалку создать , она лучше будет работать?
глобальная переменая не обнуляется
запустил проект например цикл 100
запускаешь снова он начнёт со 1о1
а тебе надо с 0
ты должен сам думать как обнулить, а это только используя C#
 

martens

Client
Регистрация
27.07.2015
Сообщения
97
Благодарностей
3
Баллы
8
глобальная переменая не обнуляется
запустил проект например цикл 100
запускаешь снова он начнёт со 1о1
а тебе надо с 0
ты должен сам думать как обнулить, а это только используя C#
Используя общий код в OwnCodeUsings можно будет задать эту переменную ДО начала запуска всех потоков?
или там только свои процедуры и using-и можно добавлять?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Используя общий код в OwnCodeUsings можно будет задать эту переменную ДО начала запуска всех потоков?
или там только свои процедуры и using-и можно добавлять?
да можно и общем и в кубике
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Если проект прервать и начать заного - этот сниппет перестает работать почему то, нужно именно саму Зенку перезапускать
Все можно сделать без перезапуска:
Есть у меня такой шаблон Парсер анкет и фото с Mamba.ru , в нем посмотрите первый скриншот в спойлере "Spoiler: Скриншоты «Входные настройки» с кучей настроек:"
Там есть выпадающее меню с варинтом В, который как раз после запуска в 1 поток обнуляет переменные и приводит шаблон в "Девственное состояние".
Я уже не помню как я до такого докотился дошел, но вот так выглядит оттуда алгоритм обнуления:


Коды кубиков из скриншота:
C#:
lock(SyncObject) {
    try {
        var gbVar = project.GlobalVariables["[email protected]", "G_Cookie"];
        // go to bad exit if already initilized
        return null;
    } catch (KeyNotFoundException ex) {
        project.SendInfoToLog("Глобальная переменная G_Cookie пока не создана, нет смысла ее обнулять", true);
        return "ok";
    }
}
C#:
project.SendInfoToLog("Глобальная переменная G_Cookie есть, очищаем ее и обнуляем значение G_offset", true);
lock(SyncObject) {
        var defaultValue = "";
        project.GlobalVariables.SetVariable("[email protected]", "G_Cookie", defaultValue);
        int defaultValue2 = 0;
        project.GlobalVariables.SetVariable("[email protected]", "G_offset", defaultValue2);
        }
Насколько я сейчас понимаю этот алгоритм: шаблон пробует создана ли глобальная переменная (пробует присвоить ей данные), если НЕ создана, то все ок, не смысла ее обнулять. А если может присвоить, значит она создана, тогда первый кубик выходит по красной ветке к второму кубику, где и происходит обнуление.

UPD: Не претендую на авторство, ибо просто собирал идею с отрывков форума, оригинальный код легко гуглится по старым комментариям:
// go to bad exit if already initilized site:zennolab.com
 
Последнее редактирование:
  • Спасибо
Реакции: RazDvaTri

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