Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 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,003
По умолчанию

Апи функция 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,591
По умолчанию

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

Цитата:
нужно каждые 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 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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