уже всю голову сломал =/ код показать не могу)) ну думаю, что все понятно будет из описания и подскажут, что это я в коде неправильно делаю, или нет. проблема в следующем: первоначально я написал процедуру с использованием локальных переменных и все работало отлично. затем я все переменные выделил в отдельный файл и подключил его. вызываю процедуру через stdcall ProcName. код уже 100 раз проверил, но после выполнения всего кода (проверил, поставив msgbox перед ret) падает. но, если задать любую локальную переменную (и даже не использовать ее) или поставить параметр (хотя его даже не передавать), то процедура завершиться нормально и все ок. не понимаю( спасибо.
у меня есть главный файл. в нем я подключаю файл с данными и файл с процедурами из него и вызываю процедуру из другого файла. все функции выполняются как надо - проверял по кодам ошибок. 1nsidE, как?)
я тебе открою один большой секрет,локальные переменные и аргументы находятся на стекео_О,и если ты что-то там неправильно нашамнствуеш,то можешь затереть адрес возврата( или тебе о нем тоже надо рассказать? ),и функция будет возвращаться в космос.понятно? и вообще,ты можешь нормально обьяаснить в каком файле что у тебя?или хоть кусок кода дай.
в файле data.inc у меня все переменные и константы. в файле procs.asm у меня процедуры. главный файл - main.asm, в нем я подключаю файл data.inc и procs.asm, а затем вызываю процедуры из procs.asm. а можно пример, что может затереть адрес возврата? вроде бы весь код правильный.
вынес их в отдельный файл и подключаю, как я описал это выше. собственно с локальными переменными был подключен win32ax и использовал addr для получения адреса. сейчас подключен win32a и поскольку переменные не локальные, то просто пишу имя переменной для получения адреса.
отмечу, что весь код процедуры выполняется корректно, но как дело доходит до выхода из процедуры, то она падает
1nsidE, что вас убило? я по моему в самом первом посте четко написал, что раньше было с локальными, а сейчас вынес в отдельный файл подключаю в начале файла.
e4key, довайте исходнеке. без них, как было выше сказанно, довольно неудоно искать ошибке. по крайней мере пока часы не перевели..