Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

непонятки с таймером   Найти похожие ветки 

 
DinoRay   (2005-11-08 11:38) [0]

Есть класс в нем таймер, так вот  при вызове Start
таймер не срабатывает.
если сделать в конструкторе  Timer.Enabled:=True;
срабатывает, че за непонятки...

  TObj = class(TComponent)
   private
    Timer:TTimer;
   public
    procedure TimerOnTimer(Sender:TObject);
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
    procedure Start;
    procedure Stop;
  end;

procedure TObj.TimerOnTimer(Sender:TObject);
begin
FlagTimer:=True;
end;

procedure TObj.Start;
begin
Timer.Enabled:=True;
end;

procedure TObj.Stop;
begin
Timer.Enabled:=False;
end;

constructor TObj.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Timer:=TTimer.Create(Self);
Timer.OnTimer:=TimerOnTimer;
Timer.Enabled:=False;
end;

destructor TObj.Destroy;
begin
inherited;
Timer.Free;
end;


 
Ega23 ©   (2005-11-08 12:03) [1]

сочетание

> Tmer:=TTimer.Create(Self);

и
i
> destructor TObj.Destroy;
> begin
> inherited;
> Timer.Free;
> end;


даст ошибку.


 
Ega23 ©   (2005-11-08 12:04) [2]


> FlagTimer:=True;


Что такое Flagtimer?


 
umbra ©   (2005-11-08 12:13) [3]

у меня все работатет (если в деструкторе поменять местами строки между begin и end. Проблема в том, как Вы используете компонент.


 
Ega23 ©   (2005-11-08 12:15) [4]


> (если в деструкторе поменять местами строки между begin
> и end.


Их вообще не надо менять. Надо Timer.Free выбросить.


 
umbra ©   (2005-11-08 12:20) [5]

тогда лучше выбросить весь деструктор :)


 
Leonid Troyanovsky ©   (2005-11-08 12:26) [6]


> umbra ©   (08.11.05 12:20) [5]
> тогда лучше выбросить весь деструктор :)


В данном случае, можно выбросить и TObj.
Тем более, что TTimer запускается без проблем.

Ну, а если серьезно, то проще наследовать TObj от TTimer.

--
Regards, LVT.


 
Ega23 ©   (2005-11-08 12:34) [7]


> тогда лучше выбросить весь деструктор :)
>


Ну может у него кроме таймера там ещё что-то...


 
DinoRay   (2005-11-08 13:08) [8]

Почитал я тут и самому смешно стало
тут признаюсь перепутал со спешки,
хотя ошибку не даст...)))

> destructor TObj.Destroy;
> begin
> inherited;
> Timer.Free;
> end;

> Timer.Free;
Это можно выбросить, но смысл от этого не изменится..

А вот TObj выбросить не получится т.к. процедура  procedure TimerOnTimer(Sender:TObject); должна быть членом класса а у меня Dll

Я думаю дело в том, что WM_TlMER имеет низкий приоритет и может  быть игнорировано, если система занятаю.
После Start у меня идет опрос порта, переставил в другое место, заработало.


 
Ega23 ©   (2005-11-08 13:12) [9]


> хотя ошибку не даст...)))


Ещё как даст. Или замени Timer:=TTimer.Create(Self); на Timer:=TTimer.Create(nil);


>должна быть членом класса а у меня Dll


class procedure уже отменили???


 
DinoRay   (2005-11-08 13:18) [10]

Сначала там было Timer:=TTimer.Create(nil);
откуда и взялось Timer.Free;
то, что после inherited поставил я сказал очепятка...
на срабатываение это все-равно не влияет

class procedure уже отменили???
Нет не отменили... только от перемены слагаемых сумма не меняется...
что так, что так один фиг


 
Digitman ©   (2005-11-08 13:20) [11]


> процедура  procedure TimerOnTimer(Sender:TObject); должна
> быть членом класса а у меня Dll


это называется "в огороде бузина, а в Киеве дядька"


 
Ega23 ©   (2005-11-08 13:32) [12]


> что так, что так один фиг


По секрету: это два совсем разных фига.


 
DinoRay   (2005-11-08 13:36) [13]

Ладно тема закрыта
10 сообщений и толку...  спасибо за бесполезные советы


 
Leonid Troyanovsky ©   (2005-11-08 13:49) [14]


> DinoRay   (08.11.05 13:08) [8]


> А вот TObj выбросить не получится т.к. процедура  procedure
> TimerOnTimer(Sender:TObject); должна быть членом класса

Хе-хе. procedure Timer; override.

> а у меня Dll

Тебе крупно не повезло.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.052 c
2-1131379330
Александр СПб
2005-11-07 19:02
2005.11.27
Параметрический запрос


2-1131278703
AlexLines
2005-11-06 15:05
2005.11.27
как добавить символ в позицию курсора


14-1131346373
Cvin
2005-11-07 09:52
2005.11.27
"Hello World!" shareware


2-1131733744
vpavel
2005-11-11 21:29
2005.11.27
Рисунок в базу загнать...


2-1131523754
Goast
2005-11-09 11:09
2005.11.27
Мерцает image!