Forum Replies Created
-
AuthorPosts
-
MikeKParticipant
Update:
Вышеописанная проблема наблюдалась на планшете Dell Venue Pro 8.
А вот на ноутбуке с тачскрином (Dell Inspiron 7347) проблема практически не заметна. Т.е. иногда заголовок окна плохо откликается на палец или надо более точно целиться (в середину тайтлбара?), но это не вызывает существенного дискомфорта.
При отлюченных скинах тач работает одинаково хорошо на обоих устройствах. Везде Windows 8.1.
Рекомендую для тестов приобрести недорогого китайца :).
MikeKParticipantЗабыл отписаться.
Проблему решил очень просто – на этом компьютере не был установлен UpdatePack1.
После его установки все заработало.
Поэтому у кого-то она воспроизводилась, у кого-то – нет.
MikeKParticipant'Support' wrote:Вы какой-то компонент уничтожаете при закрытии формы?
Реально сделать демку с ошибкой?
Обычная форма со SkinManager. Больше ничего.
Приаттачил.
Вот еще с Эврикой собрал:
EurekaLog 7.0.6.0
Exception:
2.2 Address: 00469C52
2.5 Type : EAssertionFailed
2.6 Message: Component already destroyed: ClassName: TForm (C:BuildsTPrtlcommonClasses.pas, line 12219).
2.7 ID : DD3F0000
2.11 Sent : 0
User:
3.2 Name : Michael
3.3 Email: example@example.com
Steps to reproduce:
8.1 Text:
Call Stack Information:
|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |
|*Exception Thread: ID=6964; Parent=0; Priority=0 |
|Class=; Name=MAIN |
|DeadLock=0; Wait Chain= |
|Comment= |
|
||7FFFFFFE|03 |00000000|00469C52|ACTest.exe|00069C52|Classes |TComponent |FreeNotification | |
|00000020|03 |0018F6C8|005EC270|ACTest.exe|001EC270|Forms |TCustomForm |CreateParams | |
|00000020|03 |0018F6EC|0058D66A|ACTest.exe|0018D66A|Controls |TWinControl |CreateWnd | |
|00000020|03 |0018F80C|005E8735|ACTest.exe|001E8735|Forms |TScrollingWinControl|CreateWnd | |
|00000020|03 |0018F814|005EC73A|ACTest.exe|001EC73A|Forms |TCustomForm |CreateWnd | |
|00000020|03 |0018F82C|0058DBBA|ACTest.exe|0018DBBA|Controls |TWinControl |CreateHandle | |
|00000020|03 |0018F83C|00591890|ACTest.exe|00191890|Controls |TWinControl |HandleNeeded | |
|00000020|03 |0018F844|0059189D|ACTest.exe|0019189D|Controls |TWinControl |GetHandle | |
|00000020|03 |0018F84C|00693826|ACTest.exe|00293826|sSkinProvider| |MakeCoverForm | |
|00000020|03 |0018FED4|0040613A|ACTest.exe|0000613A|System |TMonitor |TryEnter | |
|00000020|03 |0018FEE0|00589E30|ACTest.exe|00189E30|Controls |TControl |Perform | |
|00000020|03 |0018FEFC|0058883A|ACTest.exe|0018883A|Controls |TControl |SetVisible | |
|00000020|03 |0018FF10|005EA2FE|ACTest.exe|001EA2FE|Forms |TCustomForm |SetVisible | |
|00000020|03 |0018FF1C|005EF0E2|ACTest.exe|001EF0E2|Forms |TCustomForm |Hide | |
|00000020|03 |0018FF20|005E9684|ACTest.exe|001E9684|Forms |TCustomForm |BeforeDestruction | |
|00000020|03 |0018FF28|00405B3D|ACTest.exe|00005B3D|System | |_BeforeDestruction | |
|00000020|03 |0018FF34|005E96A6|ACTest.exe|001E96A6|Forms |TCustomForm |Destroy | |
|00000020|03 |0018FF44|00469F6B|ACTest.exe|00069F6B|Classes |TComponent |DestroyComponents | |
|00000020|03 |0018FF54|005E7511|ACTest.exe|001E7511|Forms | |DoneApplication | |
|00000020|03 |0018FF58|0043773D|ACTest.exe|0003773D|SysUtils | |DoExitProc | |
|00000020|03 |0018FF60|00406E01|ACTest.exe|00006E01|System | |_Halt0 | |
|00000020|04 |0018FF74|006D4D7D|ACTest.exe|002D4D7D|ACTest | |Initialization |21[4] |
|00000020|03 |0018FFD8|775A9F40|ntdll.dll |00039F40|ntdll | |(possible RtlInitializeExceptionChain+49)| |
Modules Information:
|Handle |Name |Description |Version |Size |Modified |Path |
|00400000|ACTest.exe | | |3517952 |2014-10-05 14:23:31|C:TEMPAC-TestDebugWin32 |
|63670000|AcLayers.dll |Windows Compatibility DLL |6.1.7601.17974 |561664 |2012-10-16 11:39:52|C:WindowsAppPatch |
|6FD50000|dbghelp.dll |Windows Image Helper |6.12.2.633 |1213200 |2013-04-01 21:23:40|C:DelphiEurekaLog 7Bin |
|6FEF0000|ntshrui.dll |Shell extensions for sharing |6.1.7601.17755 |442880 |2012-01-04 12:58:41|C:WindowsSystem32 |
|6FFD0000|EhStorShell.dll |Windows Enhanced Storage Shell Extension DLL |6.1.7600.16385 |189952 |2009-07-14 05:15:14|C:WindowsSystem32 |
|70030000|slc.dll |Software Licensing Client Dll |6.1.7600.16385 |27136 |2009-07-14 05:16:15|C:WindowsSystem32 |
|70040000|cscapi.dll |Offline Files Win32 API |6.1.7601.17514 |34816 |2010-11-21 07:24:02|C:WindowsSystem32 |
|70050000|WindowsCodecs.dll|Microsoft Windows Codecs Library |6.2.9200.16809 |1230336 |2014-02-04 06:04:22|C:WindowsSystem32 |
|70280000|ntmarta.dll |Windows NT MARTA provider |6.1.7600.16385 |121856 |2009-07-14 05:16:11|C:WindowsSystem32 |
|70390000|olepro32.dll | |6.1.7601.17514 |90112 |2010-11-21 07:24:03|C:WindowsSystem32 |
|70410000|mpr.dll |Multiple Provider Router DLL |6.1.7600.16385 |64000 |2009-07-14 05:15:41|C:WindowsSystem32 |
|70680000|apphelp.dll |Application Compatibility Client Library |6.1.7601.17514 |295936 |2010-11-21 07:24:14|C:WindowsSystem32 |
|72D40000|propsys.dll |Microsoft Property System |7.0.7601.17514 |988160 |2010-11-21 07:24:08|C:WindowsSystem32 |
|73050000|dwmapi.dll |Microsoft Desktop Window Manager API |6.1.7600.16385 |67072 |2009-07-14 05:15:13|C:WindowsSystem32 |
|73070000|uxtheme.dll |Microsoft UxTheme Library |6.1.7600.16385 |245760 |2009-07-14 05:11:24|C:WindowsSystem32 |
|730F0000|comctl32.dll |User Experience Controls Library |6.10.7601.17514 |1680896 |2010-11-21 07:23:55|C:Windowswinsxsx86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2|
|73370000|msimg32.dll |GDIEXT Client DLL |6.1.7600.16385 |4608 |2009-07-14 05:15:44|C:WindowsSystem32 |
|737D0000|srvcli.dll |Server Service Client DLL |6.1.7601.17514 |90112 |2010-11-21 07:24:16|C:WindowsSystem32 |
|73950000|version.dll |Version Checking and File Installation Libraries|6.1.7600.16385 |21504 |2009-07-14 05:16:17|C:WindowsSystem32 |
|73960000|winspool.drv |Windows Spooler Driver |6.1.7601.17514 |320000 |2010-11-21 07:24:08|C:WindowsSystem32 |
|74F50000|CRYPTBASE.dll |Base cryptographic API DLL |6.1.7600.16385 |36864 |2009-07-14 05:15:07|C:WindowsSysWOW64 |
|74F60000|sspicli.dll |Security Support Provider Interface |6.1.7601.18526 |96768 |2014-07-07 05:39:16|C:WindowsSysWOW64 |
|74FC0000|setupapi.dll |Windows Setup API |6.1.7601.17514 |1667584 |2010-11-21 07:23:51|C:WindowsSysWOW64 |
|75160000|imagehlp.dll |Windows NT Image Helper |6.1.7601.18288 |159232 |2013-10-19 05:36:59|C:WindowsSysWOW64 |
|75190000|rpcrt4.dll |Remote Procedure Call Runtime |6.1.7601.18532 |664064 |2014-07-14 05:40:58|C:WindowsSysWOW64 |
|752E0000|devobj.dll |Device Information Set DLL |6.1.7601.17621 |64512 |2011-05-24 14:40:05|C:WindowsSysWOW64 |
|75350000|msvcrt.dll |Windows NT CRT DLL |7.0.7601.17744 |690688 |2011-12-16 11:52:58|C:WindowsSysWOW64 |
|75410000|userenv.dll |Userenv |6.1.7601.17514 |81920 |2010-11-21 07:24:16|C:WindowsSysWOW64 |
|75430000|imm32.dll |Multi-User Windows IMM32 API Client DLL |6.1.7601.17514 |119808 |2010-11-21 07:24:25|C:WindowsSystem32 |
|75490000|shell32.dll |Windows Shell Common Dll |6.1.7601.18517 |12874240|2014-06-25 05:41:30|C:WindowsSysWOW64 |
|760F0000|KERNELBASE.dll |Windows NT BASE API Client DLL |6.1.7601.18409 |274944 |2014-03-04 13:16:18|C:WindowsSysWOW64 |
|76150000|msctf.dll |MSCTF Server DLL |6.1.7600.16385 |828928 |2009-07-14 05:15:43|C:WindowsSysWOW64 |
|76230000|profapi.dll |User Profile Basic API |6.1.7600.16385 |31744 |2009-07-14 05:16:12|C:WindowsSysWOW64 |
|76360000|usp10.dll |Uniscribe Unicode script processor |1.626.7601.18454 |626688 |2014-04-25 06:06:17|C:WindowsSysWOW64 |
|76530000|kernel32.dll |Windows NT BASE API Client DLL |6.1.7601.18409 |1114112 |2014-03-04 13:16:17|C:WindowsSysWOW64 |
|76640000|advapi32.dll |Advanced Windows 32 Base API |6.1.7601.18247 |640512 |2013-08-29 05:48:17|C:WindowsSysWOW64 |
|766E0000|shlwapi.dll |Shell Light-weight Utility Library |6.1.7601.17514 |350208 |2010-11-21 07:23:48|C:WindowsSysWOW64 |
|76740000|clbcatq.dll |COM+ Configuration Catalog |2001.12.8530.16385|522240 |2009-07-14 05:15:03|C:WindowsSysWOW64 |
|76870000|sechost.dll |Host for SCM/SDDL/LSA Lookup APIs |6.1.7600.16385 |92160 |2009-07-14 05:16:13|C:WindowsSysWOW64 |
|76890000|cfgmgr32.dll |Configuration Manager DLL |6.1.7601.17621 |145920 |2011-05-24 14:39:38|C:WindowsSysWOW64 |
|768C0000|ole32.dll |Microsoft OLE for Windows |6.1.7601.17514 |1414144 |2010-11-21 07:24:01|C:WindowsSysWOW64 |
|76A30000|user32.dll |Multi-User Windows USER API Client DLL |6.1.7601.17514 |833024 |2010-11-21 07:24:20|C:WindowsSysWOW64 |
|76B30000|oleaut32.dll | |6.1.7601.17676 |571904 |2011-08-27 08:26:27|C:WindowsSysWOW64 |
|76E10000|Wldap32.dll |Win32 LDAP API DLL |6.1.7601.17514 |269824 |2010-11-21 07:24:16|C:WindowsSysWOW64 |
|76E60000|gdi32.dll |GDI Client DLL |6.1.7601.18577 |311808 |2014-08-23 05:45:55|C:WindowsSysWOW64 |
|76F00000|psapi.dll |Process Status Helper |6.1.7600.16385 |6144 |2009-07-14 05:16:12|C:WindowsSysWOW64 |
|77130000|lpk.dll |Language Pack |6.1.7601.18177 |25600 |2013-06-06 08:57:01|C:WindowsSysWOW64 |
|77570000|ntdll.dll |NT Layer DLL |6.1.7601.18247 |1292192 |2013-08-29 05:50:30|C:WindowsSysWOW64 |
Processes Information:
Assembler Information:
; Classes.TComponent.FreeNotification (Line=0 – Offset=59)
;
00469C2B push $00469D14 ; ANSI: ' '; UNICODE: ' ClassName: '
;
; Line=0 – Offset=64
;
00469C30 lea edx, [ebp-$08]
;
; Line=0 – Offset=67
;
00469C33 mov eax, [ebx]
;
; Line=0 – Offset=69
;
00469C35 call System.TObject.ClassName
;
; Line=0 – Offset=74
;
00469C3A push dword ptr [ebp-$08]
;
; Line=0 – Offset=77
;
00469C3D lea eax, [ebp-$04]
;
; Line=0 – Offset=80
;
00469C40 mov edx, $00000004 ; ANSI: '…'; UNICODE: '…'
;
; Line=0 – Offset=85
;
00469C45 call System._UStrCatN
;
; Line=0 – Offset=90
;
00469C4A mov eax, [ebp-$04]
;
; Line=0 – Offset=93
;
00469C4D mov ecx, $00002FBB ; ANSI: '…'; UNICODE: '…'
;
; Line=0 – Offset=98
;
00469C52 mov edx, $00469D3C ; ANSI: 'C'; UNICODE: 'C:BuildsTPrtlcommonClasses….' ; <– EXCEPTION
;
; Line=0 – Offset=103
;
00469C57 call System._Assert
;
; Line=0 – Offset=108
;
00469C5C cmp dword ptr [ebx+$14], +$00
;
; Line=0 – Offset=112
;
00469C60 jnz Classes.TComponent.FreeNotification (Line=0)
;
; Line=0 – Offset=114
;
00469C62 mov dl, $01
;
; Line=0 – Offset=116
;
00469C64 mov eax, dword ptr [TList]
;
; Line=0 – Offset=121
;
00469C69 call System.TObject.Create
;
; Line=0 – Offset=126
;
00469C6E mov [ebx+$14], eax
;
; Line=0 – Offset=129
;
00469C71 mov edx, esi
;
; Line=0 – Offset=131
;
00469C73 mov eax, [ebx+$14]
;
; Line=0 – Offset=134
;
00469C76 call Classes.TList.IndexOf
Registers:
EAX: 0018F5A0 EDI: 00000001
EBX: 00000000 ESI: 0EEDFADE
ECX: 00000007 EBP: 0018F5F0
EDX: 00000000 ESP: 0018F5A0
EIP: 760FC42D FLG: 00200216
EXP: 00469C52 STK: 0018F68C
Stack: Memory Dump:
0018F6C8: 005EC275 00469C52: BA 3C 9D 46 00 E8 84 D2 F9 FF 83 7B 14 00 75 0F .<.F…….{..u.
0018F6C4: 000B0A94 00469C62: B2 01 A1 A0 1C 45 00 E8 AA B8 F9 FF 89 43 14 8B …..E…….C..
0018F6C0: 00000000 00469C72: D6 8B 43 14 E8 51 36 FF FF 85 C0 7D 13 8B D6 8B ..C..Q6….}….
0018F6BC: 00000000 00469C82: 43 14 E8 DF 33 FF FF 8B D3 8B C6 E8 5E FF FF FF C…3…….^…
0018F6B8: 00EAEF20 00469C92: 66 81 4B 1C 00 01 33 C0 5A 59 59 64 89 10 68 BA f.K…3.ZYYd..h.
0018F6B4: 00000000 00469CA2: 9C 46 00 8D 45 F8 BA 02 00 00 00 E8 56 D4 F9 FF .F..E…….V…
0018F6B0: 0018F6C4 00469CB2: C3 E9 34 C9 F9 FF EB EB 5E 5B 59 59 5D C3 B0 04 ..4…..^[YY]…
0018F6AC: 0040666C 00469CC2: 02 00 FF FF FF FF 1D 00 00 00 43 00 6F 00 6D 00 ……….C.o.m.
0018F6A8: 0018F6F0 00469CD2: 70 00 6F 00 6E 00 65 00 6E 00 74 00 20 00 61 00 p.o.n.e.n.t. .a.
0018F6A4: 00469C5C 00469CE2: 6C 00 72 00 65 00 61 00 64 00 79 00 20 00 64 00 l.r.e.a.d.y. .d.
0018F6A0: 0018F6C4 00469CF2: 65 00 73 00 74 00 72 00 6F 00 79 00 65 00 64 00 e.s.t.r.o.y.e.d.
0018F69C: 00D9626C 00469D02: 3A 00 20 00 00 00 B0 04 02 00 FF FF FF FF 0C 00 :. ………….
0018F698: 00469D3C 00469D12: 00 00 20 00 43 00 6C 00 61 00 73 00 73 00 4E 00 .. .C.l.a.s.s.N.
0018F694: 00002FBB 00469D22: 61 00 6D 00 65 00 3A 00 20 00 00 00 00 00 B0 04 a.m.e.:. …….
0018F690: 00469C5C 00469D32: 02 00 FF FF FF FF 23 00 00 00 43 00 3A 00 5C 00 ……#…C.:..
0018F68C: 00469C5C 00469D42: 42 00 75 00 69 00 6C 00 64 00 73 00 5C 00 54 00 B.u.i.l.d.s..T.
MikeKParticipant'Support' wrote:Спасибо за информацию!
Здесь тоже оказалось не все так просто.
Когда приложение мультиязычное (и основной язык английский, а не-английский текст будет загружен динамически) – то такой подход работает.
Если же изначально в dfm содержится русский текст, то проблемы появятся и на XP.
Как я понял, при чтении dfm Delphi требует что бы DefaultThreadLocale была английская, т.е. 1033.
А вот в дальнейшем уже переключаться на LOCALE_USER_DEFAULT.
Т.е. при создании любой формы можно делать примерно следующее:
SetThreadLocale(1033);
Application.CreateForm(TFormX , FormX);
SetThreadLocale(LOCALE_USER_DEFAULT);
Ну или как я писал выше – может помочь перекомпиляция System.
MikeKParticipant'Support' wrote:У вас все исходники AlphaControls?
Можно демку посмотреть с проблемами?
Да, все исходники – зарегистрирована на email, указанный в профиле.
Насчет меню – моя ошибка – я же обычное меню использовал – проблема решилась с помощью SetThreadLocale.
TNT меню отображается нормально.
Насчет SListView – исходники и скриншот:
[attachment=5616:Unicode.PNG]
MikeKParticipantПроблема решена!
Кто виноват – сказать сложно, видимо Windows.
Дело в том что в AC повсеместно используется привидение типов String(WideString) и наоборот.
Обычно это работает нормально, но как оказалось – не всегда.
Например, в Delphi7 в преобразовании используются вызов WideCharToMultiByte и MultiByteToWideChar с параметром DefaultUserCodePage.
внутренняя переменная DefaultUserCodePage определяется в инициализации модуля System вот так:
DefaultUserCodePage := 3 // Use CP_THREAD_ACP with Win2K/XP
А в Windows 7 CP_THREAD_ACP почему то не равен CP_ACP !
В принципе можно перекомпилировать System.pas или пропатчить System.dcu что бы DefaultUserCodePage := CP_ACP
Можно сделать проще
В uses проекта прописываем самым 1м юнитом init.pas
в инициализацию init.pas ставим:
SetThreadLocale(LOCALE_USER_DEFAULT);
все.
MikeKParticipantИ еще сюда же.
Когда AC скомпилирована с TNTUNICODE, то русский текст в любом подменю отображается кракозябрами.
MikeKParticipantQuote:Я скомпилировал пример, запустил без скинов. Понажимал на кнопки, затем запустил перезугрузку системы. Программа вывела сообщение, но я не успел даже пошевелить мышкой, система ушла в перезагрузку. Так и должно быть?По умолчанию – не должно, хотя есть параметры реестра, которые позволяют так делать. Лучше на логоффе проверять, а не на шутдауне (хотя эти параметры могут и на логофф влияеть, но хоть система не выключится).
Quote:В версии 7.27 я сделал несколько изменений, поведение должно быть таким же, как и без скиновА вот похоже что стало работать как надо :).
Спасибо!
MikeKParticipant'Support' wrote:А не сложно ли пример сделать?
Я сделал приложение без скинов с приведенным кодом, но система закрывается спокойно, вместе с программой, хоть и появляется на мгновение вопрос 'Quit Application?'…
Это хорошо что появляется. Со скинами он вообще не появляется :).
Тестовый пример в аттаче.
Как тестировать – это важно:
Нагляднее в XP.
Сразу после запуска приложения нажимаем несколько раз кнопки и после этого делаем логофф.
Через несколько секунд появляется системный диалог Ending Program… Please wait.
Отменяем завершение (нажав на крестик :).
Вызывается обработчик WM_EndSession (т.е. раньше QueryEndSession) – сообщение WMEndSession, WParam = 0.
Жмем ОК.
Нажимаем несколько раз кнопки и только сейчас вызывается обработчик WM_QueryEndSession.
Эмулируем правильную работу:
Выходим из приложения и запускаем его заново.
Отключаем UseSkins или Buttons Animation.
Нажимаем кнопки.
Делаем Логофф
Появляется сообщение Quit Application? (обработчик WM_QueryEndSession).
Сразу жмем NO (или Yes) – не ждем системаного диалога
Появляется диалог программы – WMEndSession, WParam = 0 (или 1). (обработчик WM_EndSession).
MikeKParticipant'MikeK' wrote:Форма должна получить WM_QueryEndSession. Однако сначала появляется системное сообщение о том что приложение не позволяет завершить сеанс, после отмены логофа мы возвращаемся в приложение, нажимаем кнопку (sButton) и только после этого приложение получает запоздалый WM_QUERYENDSESSION.
Пораскинул мозгами 🙂 и нашел workaround – если в кнопках отключить AnimatEvents (arGlobalDef := False), то все работает как надо.
А по сути проблемы – похоже что анимационный эффект затыкается на задисебленном контроле и как то стопорит очередь сообщений.
-
AuthorPosts