![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
Самопроизвольное изменение переменной потока - дурь какая-то:
есть поток: Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
В потоке описана пропертия ))): property Task_Ready : Boolean read Get_Ready;
Которая при наличии данный ставится потоком в True, после того, как основное приложение данные вытащит себе - оно через процедуру потока ставит эту переменную в False и по идее все начинается сначала. (Кроме самих функций потока, НИЧЕГО не изменяет эту флаговую переменную, и она изменяется 1 раз при приходе данных, 1 раз когда данные обработаны). Так вот- происходит полный полтергейст в моем понимании- данные приняли, флаг поставили в 1, основной процесс увидел, данные высосал, сбросил флаг, но через несколько циклов основной программы - флаг на ровном месте опять TRUE!!!! И тут армагедец!!!!!!!!! данных то нетю, exption'ы и прочая )))) С чего????????????? |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
Хм. А где sinhronize?
Или он тут и не нужен?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab |
![]() |
![]() |
![]() |
#4 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
А зачем sinhronize? Я по приему меняю переменную внутри потока.
А по выкусыванию данных основным приложением - меняю обратно опять же через функцию потока. По секрету - пробовал и с ним. Что с ним, что без - в дебагере смотришь - сделай флаг 1 -> флаг 1, сделай флаг 0 - флаг 0, бац флаг 1. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
Может, там с адресным пространством чего...попробуйте, переменную булеву в главном потоке использовать (это кривовато, но попробывать можно).
А что за компиллятор? Кстати, а чем suspend не подходит?
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab Последний раз редактировалось ex.cluz; 30.08.2010 в 11:23. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
CodeGear Delphi 2009 12.0...
Лезть из дочернего потока в основной за флагом? Даже на слух "неправильная" идея, но надо попробовать ))) А с адресным пространством чего может быть, пусть в принципе? |
![]() |
![]() |
![]() |
#7 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
suspend пробовал - с ним работает, хочется чтобы поток запустил и забыл, он висит и с заданной периодичностью данные принимает...
а suspend/resume перезапускают поток или поток продолжает c места суспенда? |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
У вас поток пишет в свои свойства. Форма из них читает. А синхронизировать это кто будет?
Сейчас у вас Task_ok засунута в Synchronize - зачем? А для флага - ну так поставьте на него бряк (Memory breakpoint), всего делов-то.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
Task_ok - как раз и поднимает флаг, как раз внутри Synchronize для синхронизации с основным потоком.
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 30.08.2010
Сообщений: 8
|
![]()
Как (Memory breakpoint) поставить, между делом?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Видимость переменных | tae1980 | Microsoft Office Excel | 3 | 26.03.2009 18:34 |
Много переменных | Altera | Общие вопросы Delphi | 15 | 18.07.2008 08:06 |
Чистка переменных | delphin100 | Общие вопросы Delphi | 9 | 30.06.2008 10:53 |
Вальс переменных | Иллидан | Общие вопросы Delphi | 9 | 27.01.2008 10:39 |
Замена переменных | NoName_emaNoN | Win Api | 4 | 18.01.2008 09:05 |