• Как побороть зависания программы в Lazarus?

    @nslim13 Автор вопроса
    В общем, проблема оказалась в применяемом компоненте для работы с COM портом - TLazSerial. В начале, когда программы были несложные и работали только в одном потоке, проблема не проявлялась. Но с нарастанием сложности проектов, с увеличением количества одновременно задействованных портов, с применением нескольких потоков зависания проявлялись всё чаще и чаще. Как я понял, у этого компонента проблемки с согласованием работы в разных потоках, и он периодически просто ловит клина. Применение критических секций так же не давало никакого эфекта.
    Решением стал отказ от TLazSerial, и переход на компонент TComPort. Адаптация прошла максимально безболезненно. Так что, если у Вас проявляется подобный эффект, попробуйте такое решение.
    Ответ написан
    Комментировать
  • Как исправить код, если пропадает значение переменной после завершения функции?

    @nslim13
    Наверное вот так:
    var finalScore = null;
    // setting new final score
    function settingFinalScore() {
      let newFinalScore = +prompt("Please set new Final Score", 100);
      finalScore = newFinalScore;
      alert(newFinalScore);  
      alert(finalScore);
    }
    Ответ написан
    Комментировать