Есть переменная Targdet db 256 dup(?) Необходимо передать её значение(путь к папке) в функцию Function proc Targetpass:? Как правильно записать подходящий тип данных для Targetpass
Почему тогда в Targetpass после передачи вместо необходимого значения(путь к папке) находится какая-то фигня
не знаю, как в 64битах, а в 32-битной оси стек выравнивается по 4 байта. Поэтому, однозначно DWORD. А фигня может быть, если ты передаешь не смещение пути, а соержание первых 4-х байт переменной, в которой хранится путь. В отладчике б посмотрел это дело, что ли.
Делаю так Function PROTOWORD Targdet db 256 dup(?) ... Targdet присваевается значение invoke Function, addr Targdet ... Function proc TargetpassWORD invoke MessageBox,0,addr Targdet,ADDR AppName,MB_OK Всё OK. MessageBox показывает необходимое содержимое Targdet, т.е. оно не изменялось. Делаю так Targdet db 256 dup(?) ... Targdet присваевается значение invoke Function, addr Targdet ... Function proc TargetpassWORD invoke MessageBox,0,addr Targetpass,ADDR AppName,MB_OK Получается Фигня
Не важно как присваевается и что. В обоих случаях одинаково, но в первом случае всё OK, а во втором нет.
проблема в том, что во втором случае ты почему-то передаешь АДРЕС указателья в стеке, а не сам указатель. У тебя: А надо
А на каком участке она вылетает? Я не верю, что простой MessageBox, да еще и с таким вызовом, как ты показал, может привести к падению программы. Ты в отладчике ее смотрел? У тебя в Targdet строка правильно заносится? Ты ret из своей функции делаешь? Ты следишь за регистрами, чтобы они в результате вызова апишки не менялись?