Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите прием отладки св-ва Terminated у потока [D7, XP]


AV ©   (2012-05-02 17:35:00) 

procedure Thread.Execute;
 repeat
    Вся работа
 until Terminated;
 CanKillMe := True; // public-св-во, потом перебираю все потоки и кого можно убить - убиваю

Когда отлаживаешь, доходишь до Terminated, оно всегда равно False(т.к. не могу переключится в программу, которая устанавливает св-во Terminated в true).
т.е. надо изменить на True (из-под отладчика)
т.е. как бы сказать этому потоку Terminate


Юрий Зотов   (2012-05-03 13:07:00) [1]


> AV ©   (03.05.12 10:06) [6]

Это не "ЮЗ посоветовал", это классики так советуют.

Да ведь и действительно: программа находится в каком-то состоянии, приходит символ, программа переходит в другое состояние (допустимое или нет). Конечный автомат в чистом виде.


AV   (2012-05-03 10:06:00) [2]

Отладилось!
Забыл inherited дописать в destractor одного класса :)
Здорово то как получается..

Никогда (наверное :)) не забуду, как ЮЗ посоветовал как-то аля машину состояний реализовать при анализе некоторого формального языка.
Мой случай :) Общаюсь с железками на их языке.
Особенно, если ответы приходят по сети в разное время от разных потоков(тем более, по сети, уже потоки id), машина состояний, короче, - "само то".


AV   (2012-05-03 09:04:00) [3]

Чем становлюсь старее, тем глупее :)
Потом уже придумал написать
until Terminated and B;
а локальную переменную уж поменять могу через менюшку debug.
А тут вообще можно и проперти, оказывается..
Спасибо.


Германн   (2012-05-02 23:55:00) [4]

В BreakPoint properties поставить условие Terminated = True


Cobalt   (2012-05-02 23:07:00) [5]

Анатолий, внимательнее:
> надо изменить на True ( из-под отладчика)


Anatoly Podgoretsky   (2012-05-02 19:03:00) [6]

> AV  (02.05.2012 17:35:00)  [0]

Terminated := True;


Cobalt   (2012-05-02 18:38:00) [7]

Нажимаешь Ctrl+F5 (или F7?)
набираешь self.Terminated, Enter
вводишь True, Enter


Наверх

Титульная страница Поиск, карта сайта Написать письмо