Главная страница
    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.033 c
14-1094811290
DSKalugin
2004-09-10 14:14
2004.10.03
вчера вышл новая версия IBExpert !!!


8-1089107085
Aplay
2004-07-06 13:44
2004.10.03
Приближение и отдалиние изображении


1-1095343895
M-Alex
2004-09-16 18:11
2004.10.03
Командная строка


9-1083579189
OSokin
2004-05-03 14:13
2004.10.03
Максимально возможная игра


14-1095181659
hgd
2004-09-14 21:07
2004.10.03
Кто подскажет про декомпилятор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский