Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2007, 20:32   #11
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

эта прога вообще что делает?
rpy3uH вне форума Ответить с цитированием
Старый 26.02.2007, 21:16   #12
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Прога переводит графику из формата игры в BMP и обратно. Есть готовая DOS версия (моя), я её просто перевожу под Win интерфейс. И как раз функции распаковки/упаковки были написаны на ассемблере. Лень переписывать эти функции на язык высокого уровня мне. Как это ни странно. =)
Хотя насколько я успел заметить операция типа OutBufPtr^[0]:=$FF; (здесь указатель объявлен как PByteArray) вызывает ту же ошибку. Так что не в ассмблере может и дело...
SteelRat вне форума Ответить с цитированием
Старый 27.02.2007, 20:19   #13
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

короче у тебе надо разрешить запись в эту память, проверь нормально ли завершается функция virtualprotect, может она выдаёт ошибку, проверь, вообще существует ли эта область памяти
rpy3uH вне форума Ответить с цитированием
Старый 27.02.2007, 20:45   #14
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Точно, VirtualProtect выдаёт false и GetLastError выдаёт $57
Пока значение этого кода не нашел.

$57 - это просто неверные параметры. =)
Изменил OldProtect с pointer на dword - ошибка изменилась.
Теперь это 3796

SysErrorMessage показывает пустое окно для этого кода. =)

Память эта просто обязана существовать, я же её выделял. При чём по-всякому.

Вот здесь нашел значение кода 3796. К Дельфи не имеет никакого отношения, но по смыслу почему-то подходит.
http://cenmvst.gov.ab.ca/bookmgr-cgi...ESSAGE.BKSHELF

Ну, а если использовать VirtualAlloc, то код ошибки 3720. Уффф...

Последний раз редактировалось SteelRat; 27.02.2007 в 22:34.
SteelRat вне форума Ответить с цитированием
Старый 27.02.2007, 22:49   #15
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Всё, Грузин, спасибо огромное. Я нашел ошибку. Как и ожидалось она нашлась в совсем другом месте. Я сразу хреново сделал, что привёл код лишь в общих чертах. Просто у меня используется команда LOOP для циклов. А счетчик то я задавал в CX по старой привычке, я ещё не работал 32 разрядными регистрами. Естественно, что в ECX было значение хрен знает какое. Буфер переполнялся - Access Violation. Во дурааак я.... =)
PS Оказывается при отладке F8 прокрутит весь цикл LOOP. Раньше такого не было. =) Если бы не это - нашел бы ошибку сразу. Но зато ничего не узнал бы про VirtualProtect.

Последний раз редактировалось SteelRat; 27.02.2007 в 23:44.
SteelRat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись дисков в Delphi FaTaL Общие вопросы Delphi 16 19.04.2011 20:15
Буфер и паскаль Mago Паскаль, Turbo Pascal, PascalABC.NET 4 29.07.2008 22:19
Запись CD/DVD дисков в Delphi Igoressicus Общие вопросы Delphi 10 17.07.2008 18:40
Запись в файл в Delphi, нужна помощь s-t-r-i-k-e-r Помощь студентам 5 03.06.2008 19:11
Запись на диск через Delphi delphin100 Общие вопросы Delphi 1 09.10.2007 10:10