Здравствуйте еще раз Существует такой код: Код (Text): deep_scan Proc basedir:DWord, frstlevel:DWord Local PreItog:DWord Local sec_lvl:DWord Local File_Clean[200H]:Byte Local Name_buffer[200H]:Byte Local Nametest:DWord Mov Eax, basedir Mov PreItog, Eax Mov Eax, frstlevel Mov sec_lvl, Eax Mov Ebx, [basedir] Invoke lstrlen, Ebx Mov Byte Ptr [Ebx + Eax] - 3, 00H Invoke lstrcat, basedir, frstlevel Invoke lstrcat, basedir, Addr Add1 Invoke FindFirstFile, basedir, Addr wfd Mov hFind2, Eax looper2: Invoke FindNextFile, hFind2, Addr wfd .If Eax != 0 Invoke lstrcmp, Addr wfd.cFileName, Addr dot .If Eax != 0 Invoke lstrcmp, Addr wfd.cFileName, Addr ddot .If Eax != 0 And wfd.dwFileAttributes, 0010H Cmp wfd.dwFileAttributes, 0010H Je dir1 Jmp non_dir2 dir1: Invoke deep_scan2, PreItog, sec_lvl, Addr wfd.cFileName Jmp ender2 non_dir2: Inc counter Invoke lstrcpy, Addr File_Clean, Addr MainHost Invoke lstrcat, Addr File_Clean, sec_lvl Invoke MessageBox, 0, Addr wfd.cFileName, 0, MB_OK Invoke wsprintf, Offset szBuf, Offset Section, counter Invoke wsprintf, Offset szBuf2, Offset File_src, counter Invoke wsprintf, Offset szBuf3, Offset File_name, counter Invoke WritePrivateProfileString, Addr szBuf, Offset szBuf2, Addr File_Clean, Addr file Invoke WritePrivateProfileString, Addr szBuf, Offset szBuf3, Addr wfd.cFileName, Addr file ender2: .EndIf .EndIf Jmp looper2 .EndIf Ret deep_scan EndP Проблема заключается в том, что переменная sec_lvl принимает значение от wfd.cFileName Почему так? Суть: В функцию передается параметр и держится в frstlevel, я его перемещаю в sec_lvl(чтобы не дай бог что то случилось xD). А на выходе имею sec_lvl который едиентичен wfd.cFileName ....
Мне надо, чтобы эта переменная была неизменна,(тоесть с таким-же видом, каким она поступила в функцию) так как она является частью "склейки" Код (Text): Invoke lstrcat, Addr File_Clean, sec_lvl Прошу не слать читать маны и гуглить...
а тут нечего гуглить и читать маны, где-то бага. - как ты проверяешь, что переменная изменилась? В отладчике? - ну если в отладчике, посмотри заодно на стек после wsprintf (который вызывается неоднократно)... - и заодно неплохо бы знать что внутри deep_scan2. И в том же отладчике посмотреть на вызов оной - убирается ли в стек при вызове адрес локальной переменной, или значение. Так, на всякий случай.