Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 376
1

Что за фигня с таймерами?

06.05.2014, 12:52. Показов 585. Ответов 9
Метки нет (Все метки)

В параметре интервал для таймеров заданы значения 10 и 1000. Все ясно? на каждое срабатывание таймера 2 (ровно раз в секунду) таймер 1 должен сработать 100 раз. Значения в соответствующих полях Edit должны относиться друк к другу как 1 к 100. Фиг там! Они очень далеки от этого. Как эти таймеры асинхронными сделать, чтобы они своей жизнью жили независимо от всего остального и были точны?
Таймер 1
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
    if (Flag==1)
    {
        int x=(StrToInt(Form2->Edit1->Text));
        x=x+1;
        Form2->Edit1->Text=(IntToStr(x));
    }
}
Таймер 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::Timer2Timer(TObject *Sender)
{
if (Flag==1)
    {
        int x=(StrToInt(Form2->Edit2->Text));
        x=x+1;
        Form2->Edit2->Text=(IntToStr(x));
        if (x==StrToInt(Form2->Edit3->Text))
        {
            Form2->Button2->Click();
        }
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2014, 12:52
Ответы с готовыми решениями:

Altium Designer-что за фигня? Может я что-нибудь не понимаю?
Потратил пару дней на изучение этой CAD - вроде все понятно и типа круто. Но вопрос - где брать...

Ребят, посмотрите , что фигня, как думаете это видеочип накрылся или что-то другое?
Ребят, помогите определить, что фигня, как думаете это видеочип накрылся или что-то другое? Может...

что за фигня :(
пытаюсь добавить а он мне Адрес http://адрес.домен.ру может быть внесен в нашу базу данных (и,...

что за фигня?
Я продвигал сайт по одному СЧ. В результате сайт вылез по совершенно не нужным мне НЧ. Что за...

9
726 / 517 / 129
Регистрация: 31.05.2013
Сообщений: 2,844
Записей в блоге: 3
06.05.2014, 13:27 2
очень давно столкнулся с этой же задачей, необходимо было сделать метроном...перерыв куча инфы и форумов...оказалась что только средствами Borlanda этого не сделать.
Что максимум могло приблизить к точности (и то всегда была погрешность), необходимо было делать для каждого таймера отдельный поток, а само приложение наделать особыми правами, в системе.
1
650 / 460 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
06.05.2014, 14:41 3
На форуме ходят слухи, что TTimer поддерживает 16 мс минимальный интервал.
В поиске по форуму можно найти решения этой проблемы.
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 376
06.05.2014, 15:08  [ТС] 4
Я делал временные интервалы 100 и 1000 мс, а так же 1000 и 10 000. Все равно разница ощутима. во втором варианте за 10 минут одного таймера набегало только 9 минут 11 секунд второго
0
726 / 517 / 129
Регистрация: 31.05.2013
Сообщений: 2,844
Записей в блоге: 3
06.05.2014, 15:13 5
может стоит все в один таймер впихнуть?
0
517 / 305 / 58
Регистрация: 30.07.2008
Сообщений: 607
06.05.2014, 15:15 6
Да таймер в билдере не точен, но есть 1 нюанс

Таймер перейдет в "режим ожидания" только после выполнения своего тела, и после того как отрисуются все элементы формы (программа то однопоточная), а потом ему еще нужно будет "получить права" на выполнения повтороного цикла

И хоть десяток таймеров накидать, это только увеличит время обработки, а потоков не добавит

C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
    if (Flag==1)
    {
        int x=(StrToInt(Form2->Edit1->Text));
        x=x+1;
        Form2->Edit1->Text=(IntToStr(x));
    }
}
в этом отрезке видно, что идет обращение к Графическим элементам
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
06.05.2014, 15:31 7
Если нужно именно точное соотношение кол-ва вызовов, то можно сделать как и сказал Dinkin, все в одном таймере.
0
1118 / 789 / 100
Регистрация: 01.02.2011
Сообщений: 1,851
Записей в блоге: 1
06.05.2014, 16:35 8
Цитата Сообщение от Gremlin Посмотреть сообщение
Да таймер в билдере не точен, но есть 1 нюанс
Таймер перейдет в "режим ожидания" только после выполнения своего тела, и после того как отрисуются все элементы формы (программа то однопоточная), а потом ему еще нужно будет "получить права" на выполнения повтороного цикла
ничего такого нету, сама винда отправляет сообщения WM_TIMER через заданный промежуток времени, на винду и надо грешить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DWORD t = timeGetTime();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        Sleep(900);
        Memo1->Lines->Add(timeGetTime()-t);
}
//---------------------------------------------------------------------------
Добавлено через 6 минут
билдер только вызывает функцию SetTimer при переключении TTimer в состояние Enabled, циклически проверяет на наличие сообщений WM_TIMER, и при приходе сообщения вызывает обработчик
0
726 / 517 / 129
Регистрация: 31.05.2013
Сообщений: 2,844
Записей в блоге: 3
06.05.2014, 16:40 9
Наверное нужно сделать вывод, что бы не изобретать велосипед и не наступать на чужие грабли, по возможности делать один таймер)
PS...встречал статью где джидаи программирования специально модуль таймера для точности писали отдельно на фортране и ка кто все это совмещали
0
1118 / 789 / 100
Регистрация: 01.02.2011
Сообщений: 1,851
Записей в блоге: 1
06.05.2014, 16:44 10
Цитата Сообщение от Dinkin Посмотреть сообщение
PS...встречал статью где джидаи программирования специально модуль таймера для точности писали отдельно на фортране и ка кто все это совмещали
не надо ничего изобрезать, уже в самой винде реализован спец. для этого точный таймер: http://msdn.microsoft.com/en-u... s.85).aspx
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2014, 16:44

Что за фигня?
По самым "хлебным" запросам типа похудения мой сайт http://www.metod-m.com.ua занимает лидирующие...

Spacesearch что за фигня?
Добрый день. Переустановил систему, начал закачивать нужное ПО на компьютер. Но как бывает скачал...

Что за фигня с ТИЦ?
На сайте стоит "денежка" - то показывает что ТИЦ=110, то 0. Причем при переходе тоже значения...

Что за фигня с яндексом?!
Пожалуйста, расскажите как быть, я раскручиваю сайт stc-nsk.ru , сайт у меня не поднимался, а был...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru