Получить список всех созданных переменных, отладка

Запросы функционала
  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Там нет моих переменных..
    И в логе массив, а там был объект

    А вы загуглите метод Object.keys()

    Это в режиме Запуска нет моих переменных, а в режиме Запись есть
    И как же их получить в режиме запуска?

    Я же об этом и говорю, скорее всего ни как

  • @Fox

    А вы загуглите метод Object.keys()

    Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.

    Запускать этот код по завершении скрипта

    var AllVariablesTable = Object.keys(this)
    
    [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable))
    
    var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"]
    var perem = []
    
    **тут кубик foreach**
    
    one = [[FOREACH_DATA]]
    
    if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){
        log(iskl.indexOf(one.substr(4)) == -1)
        perem.push(one)
        
    }
    
    

    В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
    При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
    Я остановился тут. Надо как то создать объект из каждого элемента массива.
    Проблема в том, что не могу добавить в объект
    obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)

    Простите за мой гвно код)

    obj.perem = eval(perem[i])
    Вот так значение переменной правильное, а вот ключ как изменить

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox

    А вы загуглите метод Object.keys()

    Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.

    Вы спросили почему этот код возвратил массив, а не объект, я ответил почему

    Запускать этот код по завершении скрипта

    var AllVariablesTable = Object.keys(this)
    
    [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable))
    
    var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"]
    var perem = []
    
    **тут кубик foreach**
    
    one = [[FOREACH_DATA]]
    
    if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){
        log(iskl.indexOf(one.substr(4)) == -1)
        perem.push(one)
        
    }
    
    

    В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
    При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
    Я остановился тут. Надо как то создать объект из каждого элемента массива.
    Проблема в том, что не могу добавить в объект
    obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)

    Простите за мой гвно код)

    obj.perem = eval(perem[i])
    Вот так значение переменной правильное, а вот ключ как изменить

    Вы меня тролите чтоли? Я говорю, что в окружении "this" сейчас нет локальных переменных BAS'a, что в режиме "запуск" не получить от них данные, раз их нет в окружении!

  • @Fox Я вас не понимаю.
    К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
    Разве я не могу читать файл в середине скрипта.
    Получить значение переменной в данный момент
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
    И записать переменную error в папку error для отладки.
    Так как баги не всегда в режиме Записи появляются

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox Я вас не понимаю.
    К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
    Разве я не могу читать файл в середине скрипта.
    Получить значение переменной в данный момент
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
    И записать переменную error в папку error для отладки.
    Так как баги не всегда в режиме Записи появляются

    Получить значение вы можете, но вот получить список всех переменных нет. Если вы хотите знать в определённый момент времени значение определённых переменных, то это делается элементарно через eval()

  • @Fox said in Получить список всех созданных переменных, отладка:

    знать в определённый момент времени значение определённых переменных

    да, хочу знать.
    Не подскажите как через eval() сделать?

  • @mansory333 said in Получить список всех созданных переменных, отладка:

    @Fox said in Получить список всех созданных переменных, отладка:

    знать в определённый момент времени значение определённых переменных

    да, хочу знать.
    Не подскажите как через eval() сделать?

    var q = eval(VAR_NEW_VARIABLE)
    log(q)
    
  • @Fox ну так тоже самое
    var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)

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

    Спасибо большое за помощь)

  • @mansory333 said in Получить список всех созданных переменных, отладка:

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

    В режиме "записи" как раз только и возможно получить значения всех переменных, в режиме "запуска" нельзя

  • @Fox да, перепутал)

  • @Fox said in Получить список всех созданных переменных, отладка:

    В режиме "записи" как раз только и возможно получить значения всех переменных, в режиме "запуска" нельзя

    Оказывается можно

    var AllVariablesTable = Object.keys(GLOBAL)
    .filter(function(e){return e.indexOf("VAR_") == 0})
    .reduce(function(all,one){
            try
            {
                all[one.slice(4)] = eval(one)
            }catch(e)
            {
                all[one.slice(4)] = "undefined"
            }
            return all;
    },{})
    
    log(JSON.stringify(AllVariablesTable))
    
  • @Fox Оо .спасибо)
    Как то проглядел ответ, хорошо решился поиском посмотреть)

  • Вдруг кому понадобится, простые примеры сохранения и загрузки переменных из файла

    Сохранение: 2276.xml
    Загрузка: 2277.xml

    После загрузки, что бы переменные отображались в диспетчере переменных их нужно вызвать в любом месте скрипта (хотя бы действие "Лог" с необходимой переменной)

  • Всем привет! Как-то раз @fox выкладывал код, который позволяет вывести в лог все переменные и их значения в виде объекта, которые есть в проекте для дебага. Не удалось найти по поиску, может кто-то поможет

  • @Glicjk said in Получить список всех созданных переменных, отладка:

    Всем привет! Как-то раз @fox выкладывал код, который позволяет вывести в лог все переменные и их значения в виде объекта, которые есть в проекте для дебага. Не удалось найти по поиску, может кто-то поможет

    Здесь же, чуть выше