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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 20:40   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Timer в консольном приложении

Sleep не подойдёт.
Как реализовать?
Lauri вне форума Ответить с цитированием
Старый 04.04.2011, 20:44   #2
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

А почему консольное? Скрытые окна создавать можно?
eduard93 вне форума Ответить с цитированием
Старый 04.04.2011, 20:48   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Апи функция SetTimer+цикл стандартных сообщений.

а вообще зачем это?
не проще ли многопоточность замутить со Sleep?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.04.2011, 21:01   #4
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

Без петли выборки сообщений работать не будет.
eduard93 вне форума Ответить с цитированием
Старый 04.04.2011, 21:01   #5
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Апи функция SetTimer+цикл стандартных сообщений.

а вообще зачем это?
не проще ли многопоточность замутить со Sleep?
спасибо

нужно каждые N минут отправлять данные на сервер

function SetTimer(Wnd: HWnd; IDEvent: Integer; Elapse: Word; TimerFunc: TFarProc): Word;
покажи ещё плз пример использования
Lauri вне форума Ответить с цитированием
Старый 04.04.2011, 21:04   #6
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

Так зачем все эти извороты? Вы хотите добиться минимального размера проги? Тогда причем тут консоль?
eduard93 вне форума Ответить с цитированием
Старый 04.04.2011, 23:18   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от eduard93 Посмотреть сообщение
Так зачем все эти извороты? Вы хотите добиться минимального размера проги? Тогда причем тут консоль?
Автору темы поясняю, что программу можно написать вообще без форм, это будет своеобразный "скрипт"
Вадим Мошев вне форума Ответить с цитированием
Старый 05.04.2011, 00:15   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
нужно каждые N минут отправлять данные на сервер
и чем Sleep не подходит?
зачем воротить велосипед?
или вам нужно между отправками данных чтото еще делать?

говорите цель полностью, ибо пока Sleep наиболее верное решение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.04.2011, 04:20   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> нужно каждые N минут отправлять данные на сервер

нужно — отправляйте:

Код:
program
  Project2;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, Classes;

const
  N = 10; // every 10 minutes

var
  evThreadTerminate: THandle;

type
  myThread = class(TThread)
  protected
    procedure Execute(); override;
  end;


{ myThread }

procedure myThread.Execute();
begin
  while (not Terminated) do begin
    //
    if (WAIT_OBJECT_0 = WaitForSingleObject(evThreadTerminate, N * 60000)) then
      break;
    //
    // send data
    // .....
  end;
end;


// -- main --

begin
  evThreadTerminate := CreateEvent(nil, true, false, nil);
  try
    myThread.Create(false).FreeOnTerminate := true;
    //
    // do your stuff
    //..
    //
    ReadLn;
    //
    //  close thread when done
    SetEvent(evThreadTerminate);
  finally
    CloseHandle(evThreadTerminate);
  end;
end.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в консольном приложении. Акунёк Общие вопросы C/C++ 11 19.03.2011 20:50
Вывод в консольном приложении Акунёк Общие вопросы C/C++ 6 16.02.2011 18:01
Проблема с ClientSocket в консольном приложении prod87 Работа с сетью в Delphi 1 18.07.2010 14:48
Расширение экрана в консольном приложении FelixKoT Общие вопросы Delphi 1 19.02.2010 21:22