Непонятка с OnApplicationStart



  • Добрый всем вечер, короче это либо я заработался либо программа глючит. Вынес в OnApplicationStart запись номера страницы из ресурса в переменную. Чтобы один раз в переменную записалось и потом с этой цифрой скрипт работал, уменьшая ее. Но не тут то было, когда запускаю в режиме отладки, все проходиит нормально. Когда пытаюсь запустить кнобкой запуск, сразу валится ошибка, с сообщением что данная переменная не найдена, то есть она не была записана.
    Попробовал реализовать через if таким выражением [[VAR]] == undefined но это тоже не работает, сразу ошибку выбрасывает.



  • @Samael_96
    вы используете обычные переменные, они видны только в текущем потоке.
    Используйте для этого глобальные переменные



  • Сейчас попробую, но я как бы это знал и понимал, дело в том что у меня в один поток работа ведется, или даже если в один поток, все равно из онапликейшен через глобальные получается надо работать?



  • @Samael_96 да, обычные переменные, созданые там, будут работать только там. Это как мини поток отдельный



  • @DrPrime Понятно, просто мне нужна была переменная которую изначально устанавливалась и потом она менялась, мне не надо каждый перезапуск она, только в первый



  • @Samael_96 Может кто лучший способ придумает как записать только в первый раз в переменную значение. Я придумал только так. Вначале считываю на наличие определенного файла, по результатам захожу в if дальше прописываю нужную мне переменную, и чтобы больше в этот if скрипт не заходил создаю/удаляю файл по наличию/отсутствию которого захожу в if.
    Такой вот костыль, наверняка должен быть способ проще.


  • administrators

    @Samael_96 said in Непонятка с OnApplicationStart:

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

    Если делать скрипт в один поток, то зачем использовать OnApplicationStart, просто исполняете ее содержимое в начале работы потока.


  • administrators

    @Samael_96 Поскольку у вас однопоток, то можно делать if определена переменная или нет.
    0_1491320613944_ifvar.xml



  • @support Да, так подходит, я так изначально и хотел сделать. И даже так когда-то делал, ставил просто [[VAR]] == undefined без кавычек, и оно срабатывало, на undefined который получался когда тянешь строку из пустого файла. А теперь сделал так же на изначально неопределенную переменную, и оно ее не обрабатывает выдает ошибку. Видать, какой-то нюанс связанный с программированием.


  • administrators

    @Samael_96 Проверять на undefined нужно так
    typeof([[SOME_VAR]]) == "undefined"
    OnApplicationStart останется только для обратной совместимости, в следующей версии будут стадии выполнения скрипта.


  • administrators

    @Samael_96 Теперь вместо OnApplicationStart лучше использовать стадии скрипта, действие "Вызов функции в несколько потоков"



  • @support, а чем это лучше? Смотрю, что в новых видеоуроках вы OnApplicationStart используете.


  • administrators

    @Antonio "Вызов функции в несколько потоков" намного мощнее, может динамически менять количество потоков в любое время. Например, скачать 10 файлов не последовательно, а параллельно, а после завершения удалить потоки и продолжить далее. OnApplicationStart - просто полезное сокращение.