На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Поток , проблема с Handle и чем-то там еще...
    Доброго времени суток!
    Не судите строго, только недавно начал активно использовать потоки, и тут же наткнулся на проблему(
    Я не могу понять почему, если поток внутри себя начинает изменять какие-либо визуальные свойства вроде Visible на компонентах формы, то она в последствии может неправильно обрисовываться, а одно только дальнейшее прикосновенее к ней мышью сразу порождает ошибки вроде:
    Error creating window device context
    Invalid Window Handle
    Я примерно догадываюсь что основной поток конфликтует с тем, который я создал, но можно ли как-нибудь обойти такие ошибки? :huh:
      Почитай про Synchronize
        Должна быть синхронизация. Тут хорошо написано.
          Synchronize не помогает?
            Прямо наперегонки отвечаем! :D
              и я опять последний :( :)
                Дело в том, что VCL - принципиально однопоточная библиотека и выполнять действия над визуальными компонентами в контексте неглавного потока запрещено - эффекты могут быть самые разнообразные :) Однако разработчики включили в класс TThread метод Syncronize, который приводит к тому, что переданный параметром метод будет выполнен именно в контексте основного потока (но не сразу, а когда у того будет на это время). А вызывающий поток в этом случае приостановится до тех пор, пока основной не выполнит поставленную перед ним задачу. Из этого следует, что под Syncronize нужно заносить лишь небольшие фрагменты кода, которые по тем или иным причинам должны быть выполнены именно основным потоком (например, обращение к визуальным компонентам), но ни в коем случае не весь код потока (как это рекомендуется в некоторых книгах, у Архангельского в частности), так как в этом случае смысла в потоке нет - он все время будет только ждать, но сам - ничего не делать.
                  Спасибо, теперь все встало на свои места 8-)
                  Сообщение отредактировано: oneday -
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0298 ]   [ 16 queries used ]   [ Generated: 13.02.25, 08:04 GMT ]