Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


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

эта прога вообще что делает?
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,808
По умолчанию

короче у тебе надо разрешить запись в эту память, проверь нормально ли завершается функция 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 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя