Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249

Интересный вопрос

01.05.2009, 00:58. Показов 1712. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ув. программисты,сегодня с преподователем в университете состоялся интресеный диалог.в ходе которого он мне заявил точ не одна функция программы не будет выполнятся пока в таймере работает условие и оно еще не пройдено.я могу что то не понимать но я так понимаю он хотел сказать что из за условия в таймере программа якобы находится в стадии зависания.но это же бред.Мог бы кто нибудь это более менее разьяснить?Или же пора менять университет?)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2009, 00:58
Ответы с готовыми решениями:

Интересный вопрос!
Как будет работать программа если я изменю условие! if (fV>= 0 && fAlfa>= 0 && fAlfa<= 180) просто на if 15 в приведенной ниже...

Интересный вопрос по тренарному оператору (?:)
Вот два варианта тренарного оператора (задача, - аля возведение в модуль... избавление от минуса) //вариант 1 (result>0) ? ...

Интересный баг FindFirstFile/FindNextFile при работе с маской
Пусть есть такие файлы: 1.t 1.tx 1.txt 1.txta FindFirstFile/FindNextFile (а также VCL-евские FindFirst/FindNext) при поиске...

12
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.05.2009, 01:14
скорее всего, преподователь имел ввиду, что если в таймере, выполняется некий цикл, вычисления, да и прочий код, программа, в этот момент не сможет отреагировать на систему. т.е. например, если в таймере вы напишете

C++
1
while(true);
бесконечный цикл, то при активации таймера - произойдет зависание.
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
01.05.2009, 11:10
Учитель наверно не совсем прав. Если я не ошибаюсь, таймер запускается программой в отдельном потоке. Если там цикл, то он работает до конца, пока не завершится, а др. потоки программы ждут и не работают. А с другой стороны, что мешает заставить поток таймера "делиться" системным временем и ресурсами с другими потоками? Это делается с помощью функции ProcessMessages() (наведи справку по нему.). Её вставляешь внутрь цикла в таймере (даже внутрь бесконечного). И при этом всё в программе будет работать как положено, параллельно с этим циклом

Т.е. учитель, конечно прав про своеобразное зависание, но при этом его нетрудно избежать описанным трюком.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
01.05.2009, 11:26
Таймер не запускается в отдельном потоке. Он использует апишные SetTimer/KillTimer, а OnTimer вызывается, когда приходит сообщение WM_TIMER с соответствующими параметрами. Поэтому в цикле без ProcessMessages или ей подобным новые сообщения не будут обрабатываться.
Сейчас посмотрел в Delphi этот класс: там для каждого таймера отдельное невидимое окно создаётся.
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
01.05.2009, 12:09  [ТС]
Просто мне немножко не понятно как программа может зависнуть на цикле в таймере.если каждый другой элемент программы имеет свои процедуры которые вызываются действиями с обьектами.Они работают парралельно.ведь у меня в таймере их который работает постоянно и программа не виснет.все другие процедуры свободно работают.Я ведь могу запустить два цикла в двух таймерах и они параллельно будут работать.а не так что один из них будет выполнять свой цикл,а другой ничего делать не будет.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
01.05.2009, 12:48
Они будут исполнятся поочереди. Виндосовское приложение работает на основе сообщений. Пришло сообщение "ТАЙМЕР" выполняем таймер, сообщение "НАЖАЛИ МЫШКОЙ ТУДА-ТО ТУДА-ТО", выполняем соответствующий обработчик. А так как это все делается достаточно быстро, то кажется, что все работает одновременно.
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
01.05.2009, 14:00  [ТС]
просто я делаю программу будильник и вот в чем суть я включаю будильник и таймер работает до тех пор пока не совпадет время пользователя и время системы.но я могу пока еще время не совпало вызывать нажатием на кнопки другие процедуры.такие процедуры как открытие сайта при нажатии на кнопку
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
02.05.2009, 21:01
кароче не ломай голову если у тя работает то знач работает, и будет работать нормально сам проверял, в остальных случаях работает кроме бесконечного цикла, но кому придёт в голову запхать бесконечный цикл в таймер?)) Ты чё у Чашина спрашивал?..Чашин лопух..))он даж подсказать ничё толкового не может
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
02.05.2009, 21:22
KoFeMaH, фишка в том, что управлении возвращается программе, после выполнения итерации таймера. т.е. если таймер стоит на 600000мс (1 мин) например, код твой, выполнится за несколько сотен милисекунд.... оставшееся время, идет на обработку программы. как бы вот так.
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
04.05.2009, 09:39  [ТС]
Я это понимаю.но у меня в таймере засунуто условие что он будет повторять эту проверку условия пока оно не совпадет.а так как это программа будильник то он может повторять проверку этого условия несколько часов,пока не совпадет.но программа работает в это время.я могу вызвать любое событие без проблем
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.05.2009, 09:49
KoFeMaH, ты через определенные промежутки времени в таймере проверяешь текущее время и если это время срабатывания будильника - включаешь звонок\сообщение?
0
 Аватар для AlexSt
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
04.05.2009, 10:58
Код в студию, нипойму о чем речь
0
 Аватар для KoFeMaH
38 / 24 / 4
Регистрация: 21.02.2009
Сообщений: 249
04.05.2009, 16:39  [ТС]
Цитата Сообщение от AlexSt Посмотреть сообщение
Код в студию, нипойму о чем речь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if ( (alrHour == HourOf(t) ) && (alrMinute == MinuteOf(t)) )
        {
        switch (z) {
            case 1: {N5->Click();break;}
            case 2: {N6->Click();break;}
            case 3: {N7->Click();break;}
            default:
            {fopen = Form2->OpenDialog1->FileName;
                if (fopen!="")
                {Form1->MediaPlayer1->Play();}
                else { PlaySound("Уведомление о получении почты.wav", 0, SND_ASYNC);} break;}
                   }
        Form1->Show();
        Button2->Visible= true;
        TrayIcon1->Hint = "Будильник";
        }
        if (CheckBox1->Checked){
            if ( (alrHour == HourOf(t) ) && (alrMinute+pov == MinuteOf(t)) )
            {fopen = Form2->OpenDialog1->FileName;
                if (fopen!="")
                {Form1->MediaPlayer1->Play();}
                else { PlaySound("Уведомление о получении почты.wav", 0, SND_ASYNC);}
            }
        Form1->Show();
        Button2->Visible= true;
        TrayIcon1->Hint = "Будильник";
        Timer1->Enabled = false;
        }
        else {Timer1->Enabled = false;}
 
}
 
//---------------------------------------------------------------------------
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
KoFeMaH, ты через определенные промежутки времени в таймере проверяешь текущее время и если это время срабатывания будильника - включаешь звонок\сообщение?
да.причем идет выбор либо проиграть стандартную мелодию.либо выбрать самому мелодию.либо выключить камп.либо перезагрузить его.либо выйти из логина=)вот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2009, 16:39
Помогаю со студенческими работами здесь

Имеется интересный небольшой код на Дельфи. Надо переписать его на С++.
Подскажите как преобразовать данный код... А вот и сам код: //объявляем структуру type spektr = record Re : double; Im :...

очень интересный баг
Если кто-нибудь догадается в чем ошибка, то скажите. Ошибку я уже исправил, но не знаю, почему не работает этот код: #include...

Интересный пример оптимизации
Привет! Копаясь в OpenJDK наткнулся на довольно интересный подход (оптимизацию). Решил поделиться, кому-то может быть полезно в плане...

интересный вопрос
подскажите как сделать например я открываю страницу через webbrowser и мне нужно нажать на ссылку , а как ее обнаружить ? какой код ,...

Интересный вопрос
Регист ESP указатель стека, он указывает на последний помещенный в стек элемент. #include <iostream> using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru