Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2008, 09:10   #1
Спартак
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 44
По умолчанию таймер в консоли

Доброго времен суток!
Подскажите, как сделать имитацию таймера под консолью... например, чтобы через 1 секунду вызывалась какая-либо функция
Спартак вне форума Ответить с цитированием
Старый 06.02.2008, 09:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну в цикле примени функу Sleep и после не вызывай нужную процедуру
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2008, 13:04   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Хм.....
1. Определить некую фунукцию по прототипу
Цитата:
VOID CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
В ней будут выполняться необходимые действия

2. При инициализации вызвать SetTimer, последний параметр - адрес функции из п.1
Цитата:
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
B_N вне форума Ответить с цитированием
Старый 06.02.2008, 13:45   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Тема ведь только что рассматривалась http://www.programmersforum.ru/showthread.php?t=12132
Зачем делать имитацию таймера если в системе их 2: системный и мультимедийный.
Вот пример с мультимедийным таймером
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, MMSystem;

var
  k,t,mmTimer: integer;

//обработчик таймера
procedure mmTimerProc(TimerID,Msg: Uint; dwUser,dw1,dw2: DWORD); pascal;
begin
  k:=k+1;
  write(#8#8#8#8#8#8); //это стирает символы на экране
  write(k);
  //условие остановки таймера
  if k >= 100 then TimeKillEvent(mmTimer);
end;

begin
  k:=0;
  t:=100; //интервал в мс
  //включить таймер
  mmTimer:=TimeSetEvent(t,0,@mmTimerProc,0,TIME_PERIODIC);
  readln;
end.
_Dmitry вне форума Ответить с цитированием
Старый 07.02.2008, 09:06   #5
eks-s
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 64
По умолчанию

Я буквально пару недель назад работал над реализацией консольного таймера.

Код:
var
  i,t : integer;
begin
  writeln;
  writeln('Welcome To Timer');

  t := StrToInt(paramStr(1));     //сколько секунд для отсчёта
  for i := t downto 1 do
    begin
      write('.');
      sleep(1000);
      if i = 1 then writeln('.');
    end;
  write('  '+IntToStr(t)+' sec - Complited');
  writeln;
  readln;
end.
вызывается с командной строки или bat-файла с параметром указывающим секунды, например
timer 15

Но я там мучался чтоб всё было по-русски, цветное и чтоб в реальном времени секунды отсчитывались. Пиши если интересно, расскажу

Последний раз редактировалось eks-s; 07.02.2008 в 09:22.
eks-s вне форума Ответить с цитированием
Старый 07.02.2008, 10:42   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Вот пример с системным таймером
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  Windows;

var
  k,t: integer;
  Msg: TMsg;

//обработчик таймера
procedure sysTimerProc(Wnd: HWND; uMsg,idEvent,dwTimer: UINT); pascal;
begin
  k:=k+1;
  write(#8#8#8#8#8#8); //это стирает символы на экране
  write(k);
end;

begin
  k:=0;
  t:=100; //интервал в мс
  //включить таймер
  SetTimer(0,0,t,@sysTimerProc);
  while (GetMessage(Msg,0,0,0)) and (k < 100) do DispatchMessage(Msg);
  //остановить таймер когда k >= 100
  KillTimer(0,0);
  readln;
end.
Разница между системным и мультимедийным здесь http://www.programmersforum.ru/showp...8&postcount=15
_Dmitry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвет и анимация в консоли 32-битного приложения oleg kutkov Общие вопросы C/C++ 3 15.04.2008 14:03
от консоли к окну ёжик Общие вопросы C/C++ 3 06.04.2008 17:51
Эмуляция консоли... Sota Общие вопросы C/C++ 4 20.01.2008 01:04
обработка событий из консоли! nereus Общие вопросы Delphi 0 07.02.2007 15:33