Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как использовать таймер без формы? 
:(
    Опции темы
BeeMaster
Дата 15.4.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну мне надо создать программы но у неё не должно быть вообще формы. Но там есть таймер. Ну вот пример програмки она шлет письма и там idSMTP не находится на форме, но он прописан в коде.

http://slil.ru/25692680

И откуда вытащить тот код?

 smile  smile  smile  smile  smile  smile  smile 
PM MAIL   Вверх
THandle
Дата 15.4.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



PM   Вверх
MetalFan
Дата 15.4.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



создай TTimer динамически


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 15.4.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MetalFan @ 15.4.2008,  21:27)
создай TTimer динамически

Это как?
PM MAIL   Вверх
MetalFan
Дата 15.4.2008, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



BeeMaster, рючками)
Код

  lSomeTimer := TTimer.Create(nil);



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 18.4.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Дайте полный код! А то у меня не получается использовать таймер =(


 smile 

Это сообщение отредактировал(а) BeeMaster - 18.4.2008, 13:42
PM MAIL   Вверх
MetalFan
Дата 18.4.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



полный код чего?
это ты дай код, который не работает, и тебе скажут, что в нем не так.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 18.4.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как этот таймер можно использовать? Покажите пример!
PM MAIL   Вверх
MetalFan
Дата 18.4.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(BeeMaster @  18.4.2008,  22:09 Найти цитируемый пост)
Как этот таймер можно использовать?

какой "этот"? ты с компонентом TTimer не работал?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 19.4.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Работал. Но это у меня не работат! Ну дайте пример жалко чтоли! =(
PM MAIL   Вверх
MetalFan
Дата 19.4.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(BeeMaster @  19.4.2008,  11:03 Найти цитируемый пост)
Но это у меня не работат!

показывай код.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 19.4.2008, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
lSomeTimer := TTimer.Create(nil);
end;

end.











Я просто въехать не могу как его использовать!
PM MAIL   Вверх
source777
Дата 19.4.2008, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(THandle @  15.4.2008,  21:04 Найти цитируемый пост)
SetTimer - http://msdn2.microsoft.com/en-us/library/ms644906.aspx
Насколько я помню SetTimer работает посредством сообщения WM_TIMER, или другими словами не будет он работать в приложении без форм/окон...

Цитата(BeeMaster @  19.4.2008,  18:31 Найти цитируемый пост)
lSomeTimer := TTimer.Create(nil);
А кто за тебя обработчик OnTimer будет регистрировать?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
THandle
Дата 19.4.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure OnMyTimer(Sender : TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  tim : TTimer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  tim := TTimer.Create(nil);
  tim.OnTimer := OnMyTimer;
end;

procedure TForm1.OnMyTimer(Sender: TObject);
begin
  ShowMessage('Timer arbaiten!!!!');
end;

end.



ЗЫ: 
BeeMaster, пожалуйста, используй кнопку "Код".
PM   Вверх
THandle
Дата 19.4.2008, 20:43 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Цитата(source777 @  19.4.2008,  19:58 Найти цитируемый пост)
Насколько я помню SetTimer работает посредством сообщения WM_TIMER, или другими словами не будет он работать в приложении без форм/окон...


Код

program Project1;

uses Windows, Messages;

procedure Timer;
begin
  MessageBeep(MB_OK);
end;

var
  Msg : TMsg;
begin
  SetTimer(0, 0, 2000, @Timer);
  while GetMessage(Msg, 0, 0, 0) do
    begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;
end.

PM   Вверх
MetalFan
Дата 20.4.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(source777 @  19.4.2008,  18:58 Найти цитируемый пост)
Насколько я помню SetTimer работает посредством сообщения WM_TIMER, или другими словами не будет он работать в приложении без форм/окон...

отчасти правильно понимаешь, НО:
Цитата(msdn)
You can process the message by providing a WM_TIMER case in the window procedure. Otherwise, DispatchMessage will call the TimerProc callback function specified in the call to the SetTimer function used to install the timer. 

т.о. если ты сам не обработаешь сообщение, то DispatchMessage (в петле обработки сообщений) вызовет колбэк функцию TimerProc.
собстно пример от THandle это прекрасно демонстрирует.

Добавлено через 1 минуту и 34 секунды
з.ы. в это частном примере, кстати, в вызове TranslateMessage нет необходимости


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BeeMaster
Дата 24.4.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(THandle @ 19.4.2008,  18:59)
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure OnMyTimer(Sender : TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  tim : TTimer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  tim := TTimer.Create(nil);
  tim.OnTimer := OnMyTimer;
end;

procedure TForm1.OnMyTimer(Sender: TObject);
begin
  ShowMessage('Timer arbaiten!!!!');
end;

end.



ЗЫ: 
BeeMaster, пожалуйста, используй кнопку "Код".

Почему у меня сообщение не выскакивает?

Я же просил объяснить полностью =(
PM MAIL   Вверх
w3st
Дата 25.4.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня все работает, спасибо за пример
PM   Вверх
BeeMaster
Дата 26.4.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

program Project1;

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

var
  tim : TTimer;

procedure FormCreate(Sender: TObject);
begin
  tim := TTimer.Create(nil);
  tim.OnTimer := OnMyTimer;
end;

procedure OnMyTimer(Sender: TObject);
begin
  ShowMessage('Timer arbaiten!!!!');
end;

end.


Вот я отключил форму. А  delphi кричит на OnMyTimer !!!!
PM MAIL   Вверх
generator
Дата 28.4.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну молодец! Отключил форму - а кто за тебя теперь сообщения обрабатывать будет?

А ругается на OnMyTimer - потому что она у тебя не описана. То есть у тебя она описана, НО если ты пишешь процедурно - то процедура должна быть описана ДО ее первого использования.

Создать таймер просто. Но нужно еще обработчик события OnTimer его описать. То есть, то что ты делаешь в IDE тыкая мышкой, в твоем случае придется делать руками и я бы не стал так извращаться четко не понимая, что ты пишешь и как оно работает.

Если доводить до ума твой пример, то я бы сделал так:
Код

program Project1;

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

// создаем класс для таймера
type
  TTimerHolder = class
    Timer: TTimer;
    // вот обработчик будующего таймера
    procedure OnMyTimer(Sender: TObject);
    constructor Create;
    destructor Free;
  end;

var
  Timer: TTimerHolder;
  Msg: TMsg;

{ TTimerHolder }

// конструктор класса таймера
constructor TTimerHolder.Create;
begin
  Timer:= TTimer.Create(nil);
  Timer.OnTimer := OnMyTimer;
end;

// соответственно деструктор
destructor TTimerHolder.Free;
begin
  Timer.Free;
end;

// вот обработчик будующего таймера
procedure TTimerHolder.OnMyTimer(Sender: TObject);
begin
  ShowMessage('Timer Event');
end;

begin
  // создаем наш класс с таймером
  Timer := TTimerHolder.Create;
  // ну а вот основная часть кода без него твое приложение не будет работать
  // очередь обработки сообщений
  while GetMessage(Msg, 0, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.


но это не очень красиво, хотябы потому что останавливать твое приложение придется только через среду Delphi кнопкой "Program Reset"

Можно узнать, для чего тебе именно ракая реализация - без формы?

Это сообщение отредактировал(а) generator - 28.4.2008, 22:35
PM MAIL WWW   Вверх
BeeMaster
Дата 29.4.2008, 11:26 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Трояны пишу но там из-за таймера нужно держать форму. А с формой трои много весят =)
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




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


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

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