Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Знатоки подскажите-Как реализовать таймер 
:(
    Опции темы
Modest
Дата 21.2.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



                                                              Знатоки подскажите
                                                          Как реализовать таймер?
Например: В начале определенного действия,наглядно начинается отсчет времени
а по оканчанию этого действия - останавливается и показывается сколько времени занял
этот процесс .
                                                                                          Заранее всем очень благодарен!
 smile 
PM MAIL   Вверх
_hunter
Дата 21.2.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



береш простой таймер; в начале определенного действия запускаеш его; в обработчике таймера наглядно показываеш пройденное время; в по окончанию определенного действия -- останавливаеш таймер.

P.S.
не помешало бы платформу/среду разработки указать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
skeletor
Дата 21.2.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



gettime() - должна помочь.
PM MAIL WWW ICQ   Вверх
Modest
Дата 21.2.2007, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



     А можно вас попросить привести небольшой пример ,как это реализуется  в исходнике.
     Очень нужно. Плиз!
                                                                                                                              
PM MAIL   Вверх
threef
Дата 21.2.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <windows.h>
#include <iostream>
#include <io.h>
using std::cout;

main()
{
    SYSTEMTIME st,fn;
    GetSystemTime(&st);
// чем-то занять время
    _finddata_t FD;
    unsigned mask,flag=0;
    mask=_findfirst("d:\\windows\\system32\\*.*",&FD);
    while(!flag)
    {
        flag=_findnext(mask,&FD);
        cout<<FD.name<<'\n';
    }
    _findclose(mask);
// окончание какого-то действия
    GetSystemTime(&fn);
    cout<<"Start - stop="<<(fn.wMilliseconds-st.wMilliseconds)+1000*(fn.wSecond-st.wSecond)<<'\n';

}

Осталось только посмотреть структурку SYSTEMTIME, чтобы знать, как считать разницу во времени.
PM MAIL   Вверх
WERITAS
Дата 21.2.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


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

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



Вот тебе еще такой таймер:

TimeCounter.h 
Код

#ifndef __TIMECOUNTER222__H__ 
#define __TIMECOUNTER222__H__ 
#include <iostream> 
class TimeCounter 
{ 
friend std::ostream& operator<<(std::ostream& out, TimeCounter& cntr); 
public: 

   TimeCounter() {started=false; stopped=false;} 
   void Start(); 
   void Start(int nPriority); 
   void Stop(); 
   double timeElapsed() const; 
   bool getStarted() const {return started;} 
   bool getStopped() const {return stopped;} 
   int getNewPriority() const {return new_priority;} 
   ~TimeCounter(); 

protected: 

   int new_priority; 
   int old_priority; 
   bool started; 
   bool stopped; 
   double tBefore, tAfter, i64PerfFrequency; 
    double tWord; 
}; 
#endif 


TimeCounter.cpp
Код

#include "stdafx.h" 
#include "TimeCounter.h" 
#include <windows.h> 

void TimeCounter::Start() 
{ 
   started=true; 
   stopped=false; 
   new_priority=0; 

   LARGE_INTEGER pf; 
    QueryPerformanceFrequency(&pf); 
   i64PerfFrequency = pf.QuadPart; 
    Sleep(0); 
    QueryPerformanceCounter(&pf); 
   tBefore = pf.QuadPart; 
} 

void TimeCounter::Start(int nPriority) 
{ 
   started=true; 
   stopped=false; 
   new_priority=nPriority; 
   old_priority=GetThreadPriority(GetCurrentThread()); 
   SetThreadPriority(GetCurrentThread(),new_priority); 

   LARGE_INTEGER pf; 
    QueryPerformanceFrequency(&pf); 
   i64PerfFrequency = pf.QuadPart; 
    Sleep(0); 
   QueryPerformanceCounter(&pf); 
   tBefore = pf.QuadPart; 
} 

void TimeCounter::Stop() 
{ 
   LARGE_INTEGER tAfter1; 
   QueryPerformanceCounter(&tAfter1); 
   tAfter = tAfter1.QuadPart; 

   tWord = tAfter - tBefore; 
   tWord /= i64PerfFrequency; 
   if (new_priority) 
      SetThreadPriority(GetCurrentThread(),old_priority); 
   started=false; 
   stopped=true; 
} 
    
double TimeCounter::timeElapsed() const 
{ 
   LARGE_INTEGER tempAfter; 
   double tempWord; 

   if (started) 
   { 
      QueryPerformanceCounter(&tempAfter); 
      tempWord = tempAfter.QuadPart - tBefore; 
      tempWord /= i64PerfFrequency; 

      return tempWord; 
   } 
   if (stopped) 
      return tWord; 
    
   return 0.; 
} 

TimeCounter::~TimeCounter() 
{ 
   if (new_priority) 
      SetThreadPriority(GetCurrentThread(),old_priority); 
} 

std::ostream& operator<<(std::ostream& out, TimeCounter& cntr) 
{ 
   double fsec = cntr.timeElapsed(); 
   int hour = int(fsec/3600.); 
   double fmin = fsec-3600.*double(hour); 
   int min = int(fmin/60.); 
   double sec = fmin-60.*double(min); 
   out<<"Time elapsed: "<<hour<<" h. "<<min<<" min. "<<sec<<" sec."<<std::endl; 
   return out; 
}


пример работы:
Код

Код: 
TimeCounter timer; 
timer.Start(); 
................... 
timer.Stop(); 
std::cout << timer;  


 smile 


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Rockie
Дата 21.2.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

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





--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Modest
Дата 22.2.2007, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



              Огромное все спасибо !
          Вы меня очень выручили! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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