· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› как нам вернуться домой (из Thread'a)?

<< . 1 . 2 .

Посл.отвђт Сообщен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 дошлепки - не более чем понты.

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065