|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 12, 2004 12:30:32 cresta Ты передаёшь разные параметры в функцию, причем в одном случае она у тебя работает в другом нет, можно предположить что косяк в тех параметрах что ты передаешь. А что до регистров, esi,edi,ebx в случае использования обязательно нужно сохранять, например в ListProc достаточно было написать uses esi edi ebx и не push'ить/pop'ить далее их в процедуре, masm сделает за тебя всё сам. И ещё советую не юзать макросов в таком количестве, особенно не своих, ибо не зная логики их написания и работы ты можешь нарваться на косяк, потому что в них часто находят ошибки, также как и в либе masm32.lib ;-) |
|
|
Дата: Авг 12, 2004 13:07:18 Asterix предположить что косяк в тех параметрах что ты передаешь lParam внутри PrepareIndex не используется. |
|
|
Дата: Авг 12, 2004 14:01:05 q_q Но при этом внутри PrepareIndex используешь Cnt, а не lParam В том случае, когда работает(из ListButtProc) у меня есть уже полное количество-1 (Cnt), поэтому сразу для всех заряжаю. Т.е. от 0 до <количество>-1 пришло несколько LVN_ODCACHEHINT и запущено несколько PrepareIndex Я проверял это: если не трогать скролл LVN_ODCACHEHINT приходит только один раз. Поток не перезапускается. И пробовал искуственно перезапустить в рабочем варианте поток, не ожидая завершения предыдущего. Ничего страшного в этом нет, просто ещё раз пробежал цикл и вернулся. Да и согласно Icezelion'а допускается несколько одновременно запущенных одноименных потоков. Asterix косяк в тех параметрах что ты передаешь Проблема не в процедуре как таковой, она свое дело делает, при любых входных параметрах, и можно отследить каждый проход цикла в ней, всё происходит верно, вот только возврат не получается. Или может получается, но неизвестно куда. C вытекающими отсюда последствиями. |
|
|
Дата: Авг 13, 2004 04:29:17 cresta допускается несколько одновременно запущенных одноименных потоков В теории этот так. В реальной жизни надо смотреть на функцию потока. В твоем случае она использует глобальную переменную hIconMem. Вообще трудно судить о возможных проблемах не имея полного исходного текста, не имея возможности его собрать и посмотреть на работу в отладчике. |
|
|
Дата: Авг 13, 2004 06:51:54 q_q > не имея возможности его собрать Угу, к тому же из-за использования кучи макросов не каждый может это собрать, мне например лениво ставить следующий после 8.0 masm32, опять перегонять инклуды и т.д. |
|
|
Дата: Авг 13, 2004 10:57:44 Asterix ставить следующий после 8.0 masm32 Я использую ml.exe v6.15.???? и проблем не чувствую. опять перегонять инклуды Поясни. |
|
|
Дата: Авг 13, 2004 12:43:45 q_q Оригинальные инклуды выглядят так: lstrcmpA PROTO :DWORD,:DWORD lstrcmp equ <lstrcmpA> lstrcmpiA PROTO :DWORD,:DWORD lstrcmpi equ <lstrcmpiA> Я использую такие чтобы избавится от заглушек при вызове функций: externdef _imp__lstrcmpA@8:PTR pr2 lstrcmp equ <_imp__lstrcmpA@8> externdef _imp__lstrcmpiA@8:PTR pr2 lstrcmpi equ <_imp__lstrcmpiA@8> > Я использую ml.exe v6.15.???? и проблем не чувствую. Дело не в ml а в самом пакете masm32, хотя я использую файлы от VS 2002 под 98-й и от VS2003 под 2k |
|
|
Дата: Авг 13, 2004 13:37:59 Asterix избавится от заглушек при вызове функций Понятно. Однако исправлять надо только новое, а оно появляется крайне редко. Дело не в ml а в самом пакете masm32 Конкретнее. Что в нем не так? Чего нельзя сделать при помощи оригинального каталога bin распространяемого hutch'ем (там вообще ml v6.14), чего можно сделать при помощи дошлепков VS2002, VS2003. Imho дошлепки - не более чем понты. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |