• 0
long_island

Приложение крашится

Вопросы

Всем привет.

При сборке приложения на Mac OS, приложение может в любой момент крашнуться, просто закрывается без вывода какой либо ошибки или сообщения. Это происходит абсолютно в разные моменты времени. Иногда из - за exception, хотя исключение обработано, в дебаггере всплывает исключение(обработанное), далее приложение закрывается.

Может кто - то знает в чем может быть проблема? Возможно какие - то настройки проекта необходимо правильно установить. Перерыл уже весь гугл.

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 ответов на этот вопрос

  • 0

Приложение может крашнуться в этот моменте:

  if OpenDialog.execute then
  begin
    EditPath.Text := OpenDialog.FileName;
  end;

При чем на этапе 

OpenDialog.execute

Это недопустимая функция для работы в Mac OS?

Изменено пользователем long_island

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

доступна конечно, приложите демо проект.

что вы дальше делаете с файлом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, ZuBy сказал:

доступна конечно, приложите демо проект.

что вы дальше делаете с файлом?

Так вот дело в том, что на этом моменте уже приложение закрывается, до открытия диалога выбора файла. Это, считай, и есть демо проект, но самое странно то, что это может произойти в один из 5-10 случаев.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вы визуальному компоненту (EditPath) присваиваете значение, которое возвращает диалог.

Думаю, стоит сделать так, чтобы значение Text компонента изменялось в основном потоке (синхронизировать).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, AlexG сказал:

Вы визуальному компоненту (EditPath) присваиваете значение, которое возвращает диалог.

Думаю, стоит сделать так, чтобы значение Text компонента изменялось в основном потоке (синхронизировать).

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

это перебор кажется, оно запускается в главном потоке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
11 минут назад, ZuBy сказал:

это перебор кажется, оно запускается в главном потоке

Перебор в чем? В запуске в отдельном потоке?

Ну если открыть диалог, то основное приложение приостановит свою работу - для многих приложений это критично.

Что касаемо присвоению свойству визуального компонента значений, возвращаемых тех или иных диалогов, то лучше создать переменную, присвоить ей возвращаемое значение диалога, а затем другому визуальному компоненту присвоить значение этой переменной.

Я на такие грабли наступал уже... И не поймешь - почему падает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
13 минут назад, AlexG сказал:

Перебор в чем? В запуске в отдельном потоке?

Ну если открыть диалог, то основное приложение приостановит свою работу - для многих приложений это критично.

Что касаемо присвоению свойству визуального компонента значений, возвращаемых тех или иных диалогов, то лучше создать переменную, присвоить ей возвращаемое значение диалога, а затем другому визуальному компоненту присвоить значение этой переменной.

Я на такие грабли наступал уже... И не поймешь - почему падает.

спорить не буду, я давно не использовал диалоги.

но раньше все работало нормально, не было необходимости в синхронизации

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Думаю, причина проще и сложнее одновременно. Просто что-то портит память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, kami сказал:

Думаю, причина проще и сложнее одновременно. Просто что-то портит память.

Легко

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу