Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> зацикление if 
:(
    Опции темы
Витаминка
Дата 10.9.2007, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: нет
Всего: 1



Привет всем! Подскажите пожалуста, как зациклить код на проверке булевского значения, тоесть на подобии  оператора if, который будет ждать пока значение не станет True, а не перескакивать на следуюшие строки после проверки, если значение не правда
PM MAIL   Вверх
hihi
Дата 10.9.2007, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



вызывать проверку после события, в котором происходит изменение булевой переменной.
PM MAIL   Вверх
Витаминка
Дата 10.9.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: нет
Всего: 1



Цитата(hihi @ 10.9.2007,  06:33)
вызывать проверку после события, в котором происходит изменение булевой переменной.

Непоняла как это. Это поточное приложение, там стартуют потоки, один из каторых помимо основных действий еще должен выполнить цикл и после его завершения приствоить булевской переменной значение правды, а остальные потоки дождаться когда будет правда и продожить своё выполнение
PM MAIL   Вверх
ALeXandrK
Дата 10.9.2007, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Используй while.

Код

while Переменная=False do
begin
end;


Это сообщение отредактировал(а) ALeXandrK - 10.9.2007, 08:05


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Витаминка
Дата 10.9.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: нет
Всего: 1



Цитата(ALeXandrK @ 10.9.2007,  08:03)
Используй while.

Код

while Переменная=False do
begin
end;

Из хелпа
Цитата

Перед каждым выполнением тела цикла происходит проверка условия. Если оно истинно, цикл выполняется и условие вычисляется заново; если оно ложно, происходит выход из цикла, т.е. переход к следующему за циклом оператору. 


Так пока будет выполняться цикл, условие будет ложно и переход будет к следующему оператору, как я понимаю нет никакой разницы с оператором if



PM MAIL   Вверх
Alexeis
Дата 10.9.2007, 09:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



  Булевскую переменную не принято сравнивать.
Код

while not Переменная do
begin
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Витаминка
Дата 10.9.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: нет
Всего: 1



Ясненько, спасибо smile 
PM MAIL   Вверх
ALeXandrK
Дата 10.9.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Цитата

 Булевскую переменную не принято сравнивать.


Я привел в таком виде, чтобы вопросов не возникло smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
bems
Дата 11.9.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



1)
Цитата(Alexeis @  10.9.2007,  09:38 Найти цитируемый пост)
while not Переменная do
begin
end;
 тогда уже так
Код

while not Переменная do;

2)это очень плохо в многопоточном приложении. Для этого есть специально предназначенные средства синхронизации. Например для изменения значения InterlockedExchangeAdd, а для проверки InterlockedCompareExchange


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Alexeis
Дата 11.9.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



bems, между begin и end; все же подразумевается код smile хотя бы sleep(1); или Application.ProcessMessages или и то и другое, а может еще аварийный выход, по таймауту, потому что while not Переменная do; - 100% загрузка одноядерника.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bems
Дата 11.9.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Alexeis, да 100% нагрузка. это ясно. но я ж не знал что у тебя подразумевается smile

а 
Цитата(Alexeis @  11.9.2007,  10:40 Найти цитируемый пост)
sleep(1)
 постоянные смены контекста. тоже не бест



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Alexeis
Дата 11.9.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(bems @  11.9.2007,  11:19 Найти цитируемый пост)
но я ж не знал что у тебя подразумевается smile 

  Это не у меня подразумевается, а у автора (я бы сделал так, а как он сделал...  smile ), в таких вопросах я руководствуюсь принципом не уверен - не трожь smile .



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 11.9.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(bems @  11.9.2007,  11:19 Найти цитируемый пост)
 постоянные смены контекста. тоже не бест

sleep(100)  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bems
Дата 11.9.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(MetalFan @  11.9.2007,  11:30 Найти цитируемый пост)
sleep(100)
плохая реакция на изменение значения  smile

Добавлено через 54 секунды
а если серьезно - евент тут нужен


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1046 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.