Уважаемые знатоки, использую пример указанный ниже: Код (Text): mov FileListDate, 0 mov ebx, 1 .repeat .if !FileListDate mov FileListDate, arralloc$(ebx) mov acnt, arrcnt$(FileListDate) .else mov FileListDate, arrealloc$(FileListDate, ebx) ; здесь отладчик "тухнет" mov acnt, arrcnt$(FileListDate) .endif mov str1, ptr$(buf) mov str1, cat$(str1, SADD("Пункт "), str$(ebx)) mov void, arrset$(FileListDate, ebx, str1) print arrget$(FileListDate, ebx), 13, 10 inc ebx .until ebx > 8 это всего лишь пример, который должен был мне показать где я ошибаюсь. Но выходит ошибаюсь не я, а не может правильно прошагать команду OLLY. И как теперь выкручиваться? Возможно я вообще подхожу не с того бока, мне требуется просканировать каталог на наличие определённых файлов, и заполнить массив структур содержащих информацию о найденных файлах: Код (Text): TFileListDate struct Date DATETIME ? Level DWORD ? fName BYTE 244 dup(?) ; align struct to 256 byte TFileListDate ends в дальнейшем мне хотелось бы отсортировать полученный список по алфавиту по полю fName. Подскажите, может имеются другие более подходящие варианты, для решения поставленной задачи?
Что значит тухнет? И с каких пор вопросы задают в коментариях. Проследи за ebx. Возможно он портится. Других бяк не вижу.
???, ebx не портится, пробовал OllyDbg разных версий, результат один и тот же. Дебаггер не может исполнить команду, сама программа отрабатывает исправно.
Там стоит макрокоманда arrealloc$ - это несколько команд, а не просто mov Ты наверно прямо по исходнику "топаешь"? Или я торможу из-за праздника
Как "топать" по исходнику в OllyDbg, я не знаю. Я пробовал и по F8 проскочить вызов и прошагать по инструкциям, в итоге "сваливание" происходит при вызове GlobalReAlloc в модуле arrextnd.asm. Если имеется пример "\masm32\examples\exampl10\dynarray\realloc\realloc.asm", то попробуйте выполнить инструкцию "mov hArr, arrealloc$(hArr,4)" в строке 62. Может это только у меня такие фокусы.
dsoft Ну кривой макрос. Как и всё в масме Нет проверки на ошибку при возврате из GlobalReAlloc. А вот почему GlobalReAlloc только под отладчиком возвращает ERROR_NOT_ENOUGH_MEMORY, хз.
Кривой? Непонятно, ведь сама по себе программа отрабатывает и только под дебагером сваливается. Наверное придётся использовать crt_realloc, не так удобно но...