Вверх ↑
Ответов: 2433
Рейтинг: 693
#1: 2025-05-12 19:54:23 ЛС | профиль | цитата
Да есть глюк и связан он скорее всего не с таймером, а с "скриншотером". 3042, просто смеху для тестирования предоставил ужасную. Вот схема для отлавливания ошибки:
Add(MainForm,14047676,364,189)
{
Width=576
Height=475
link(onCreate,4438343:doEnum,[])
}
Add(Timer,14741394,392,385)
{
Interval=500
OverCall=1
link(onTimer,3842519:doEvent1,[])
}
Add(WinEnum,4438343,413,203)
{
link(onFindWindow,16417546:doStrCatDlm,[])
}
Add(Image,12279222,609,322)
{
Top=125
Width=560
Height=286
Align=5
}
Add(Hub,3842519,462,385)
{
link(onEvent1,8026749:doEvent,[(500,391)(500,328)])
link(onEvent2,11512912:doEvent,[])
}
Add(Label,11295395,651,392)
{
Top=411
Width=560
Height=25
Align=4
Font=[MS Sans Serif,12,0,0,1]
AutoSize=1
AutosizeAtStart=1
Alignment=2
}
Add(MathParse,11071173,560,392)
{
DataCount=0
MathStr="%0 + 1"
link(onResult,8651668:doStrCat,[])
}
Add(StrCat,8651668,602,392)
{
Str1="Timer: "
link(onStrCat,11295395:doText,[])
}
Add(ListBox,12831490,511,203)
{
Width=560
Height=125
Align=2
Font=[MS Sans Serif,12,0,0,1]
DataType=1
link(onClick,11955308:doSplit,[])
}
Add(ScreenShort,6248627,560,322)
{
link(onCapture,12279222:doLoad,[])
link(Handle,11955308:Part1,[])
}
Add(StrCatDelim,16417546,462,203)
{
Delimiter="|"
link(onStrCatDlm,12831490:doAdd,[])
link(Str2,4438343:Handle,[(475,176)(335,176)(335,247)(419,247)])
}
Add(MultiStrPart,11955308,560,210)
{
Char="|"
From=1
Count=1
}
Add(Debug,8026749,525,322)
{
WEName="1"
VDName=""
link(onEvent,6248627:doCapture,[])
}
Add(Debug,11512912,539,392)
{
WEName="2"
VDName=""
link(onEvent,11071173:doCalc,[])
}
Желательно тестировать на FPC получается быстрее отловить ошибку остановки таймера (выделите в списке Form).

Если отключить у Timer часть кода как указано в первом посте у 3042, то можно увидеть интересный баг. Timer не отключится, но debug 2 перестанет получать события.

Скорее всего весь фокус в ScreenShort из-за этого:
BitBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height,DC,0,0,SRCCOPY);
карма: 11

0
Редактировалось 2 раз(а), последний 2025-05-12 20:21:27