Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

Таймер без формы.   Найти похожие ветки 

 
Rifo ©   (2004-09-18 18:45) [0]

Как организовать таймер, если программа не емеет формы, или если этот код находится в DLL?


 
Defunct ©   (2004-09-18 18:54) [1]

с помощью потока.

в execute должно быть что-то типа такого:

While not Terminated do
Begin
 Sleep(10);
 CurrentTime := CurrentTime + 10;
 If CurrentTime >= Interval Then
 Begin
   If Assigned(OnTimer) Then OnTimer(Self);
   CurrentTime := 0;
 End;
End;


 
Palladin ©   (2004-09-18 18:55) [2]

SetTimer


 
Rifo ©   (2004-09-18 19:03) [3]

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


 
Defunct ©   (2004-09-18 19:06) [4]

Rifo ©   (18.09.04 19:03) [3]

Тогда:

While not Terminated do
Begin
Sleep(Interval);
If Assigned(OnTimer) Then OnTimer(Self);
End;


 
Alx2 ©   (2004-09-18 19:06) [5]

>Rifo ©   (18.09.04 19:03) [3]
Займет ресурсов не больше, чем обычн.
Кроме того, если DLL сделана на Delphi, можно все-равно использовать класс TTimer


 
Alx2 ©   (2004-09-18 19:08) [6]

А для фоновой работы, имхо, лучше TThread.
Если по будильнику - см. Waitable Timer Objects


 
Rifo ©   (2004-09-18 19:21) [7]

Alx2, приведи пожалуйста, как использовать класс TTimer в DLL.


 
Alx2 ©   (2004-09-18 19:29) [8]

>Rifo ©   (18.09.04 19:21) [7]

На стадии инициализации класса-владельца (конструктор):
 Timer1 := TTimer.Create(Nil); или self, если класс-владелец является потомком TComponent (тогда уничтожать в деструкторе Timer1 не надо)
 Timer1.OnTimer := // Событие с типом TNotifyEvent.   Timer1.Interval := ???;
 Timer1.Enabled := true;

На стадии финализации (деструктор):
Timer1.Free;


 
Rifo ©   (2004-09-18 19:34) [9]

Alx2, про TTimer более-менее ясно, а что про TThread как?


 
Alx2 ©   (2004-09-18 19:40) [10]

>Rifo ©   (18.09.04 19:34) [9]
Аналогично практически. Еще Help + особенности доступа к разделяемым ресурсам.

Код из DLL выполняется в том же адресном пространстве, что и основной поток. Но стандартные глобальные объекты Delphi-приложения (например, Application, Screen) различны. Это стоит учитывать. Для избежания головной боли можно попробовать BPL библиотеки вместо DLL. Тогда эта проблема снимется.

А в остальном - как и в приложении-хосте.


 
Rifo ©   (2004-09-18 19:53) [11]

Alx2. Чего-то я не совсем понял про TThread, но спасибо за TTimer, похоже разбрался.



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

Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
1-1095147167
denisww
2004-09-14 11:32
2004.10.03
Вопрос по ListView


1-1094656909
guest_Dmitry
2004-09-08 19:21
2004.10.03
Почему умирает иконка в трее?


14-1094817727
Megabyte-Ceercop
2004-09-10 16:02
2004.10.03
Нужна Лицензионная Delphi6. Помогите кто может!!


1-1095306828
linux
2004-09-16 07:53
2004.10.03
Заставка для программы


3-1094453318
Alexan
2004-09-06 10:48
2004.10.03
Чем можно открыть базу .DAT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский