![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
В моём приложении создаётся поток класса TThread. Во время работы потока результат заносится в переменную. Как в основ ной программе можно взять значение из этой переменной?
|
|||
|
||||
Dr.No_xXx |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
я ламер и возможно не прав, но попробуй создать новую переменную и перепресвоить
значение:
надеюсь я прав удачи! ![]() Это сообщение отредактировал(а) Alex - 26.2.2005, 21:48 |
|||
|
||||
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
Ты не прав. Всё, что связано с потоком, описывается в другом модуле, по этому программа "не видит" этого значения.
|
|||
|
||||
Dr.No_xXx |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
объясни!!
|
|||
|
||||
a.S.d |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
Сам смотри:
Это сообщение отредактировал(а) a.S.d - 26.2.2005, 21:05 |
||||
|
|||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
А на каком этапе работы потока тебе это нужно сделать? Если после его отработки, то просто берешь это значение и все:
Это сообщение отредактировал(а) <Spawn> - 26.2.2005, 21:59 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
<Spawn>
Во время взятия переменной поток должен ещё работать. Unit1.str возвращает пустую строку. |
|||
|
||||
Dr.No_xXx |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
попробуй в public описать переменные
теперь должно сработать да еще ты сказал что поток должен продолжать работать так тебе нужно определенное значение или нет?? Это сообщение отредактировал(а) Dr.No_xXx - 26.2.2005, 22:32 |
|||
|
||||
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
Dr.No_xXx
Если описать в public, то в модуле потока ошибка undeclareted identifier. |
|||
|
||||
Dr.No_xXx |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
ответь:ты сказал что поток должен продолжать работать
так тебе нужно определенное значение или любое?? я попытался воспроизвести, но у меня ошибка в классе TThread
|
|||
|
||||
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
Какая разница? Какое-то значение заносится в Str, а главный поток(сама программа) должна взять из str значение. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Так суть потока в том, что он выполняется параллельно относительно главного потока программы, т.е. для того чтобы получить занчение str, сформированное второстепенным потоком, ты должен дождаться этого и сообщить главному об изменении, например, таким образом:
1) послать сообщение(WM_USER + n) главному потоку о завершении формирования значения str, причем тут нужно либо организовать синхронизацию, либо быть увереным, что str больше не изменится:) 2)Инициировать потоком вызов синхронного события(предварительно описав его на подобии этого: TStrChange = procedure (Sender: TObject; const str: string);) и т.д. Это сообщение отредактировал(а) <Spawn> - 27.2.2005, 02:46 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
a.S.d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
<Spawn>
У меня в потоке бесконечный цикл и str всё время меняется, так что сообщение я послать не могу, а в какой момент брать str определяет главный поток. Как можно по-другому это сделать? |
|||
|
||||
Dr.No_xXx |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
1)попробуй создать массив в который будут вкладуваться все значения str но учти буфер не резиновый
2)если нужно определенное значение то пиши так:
3)если любое то
в любом случае тебе прейдется перепресваивать значени в другую переменную что бы не потерять его |
||||
|
|||||
a.S.d |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 20.2.2005 Репутация: нет Всего: 2 |
Dr.No_xXx
Похоже ты не правильно понял вопрос. Вот упрощёный код моей программы:
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |