|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.02.2007, 21:35 | #1 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Запись в буфер Delphi & Asm
Приветствую. Ситуация такова. У меня есть буфер в котором будет картинка. При записи в него выскакивает Access Sharing Violation. Я, в принципе, не новичок в программировании, но это моя первая Windows-программа. Раньше как-то ДОСа всё хватало. От Гугла я уже опух и ничего не соображаю. Код примерно такой:
Код:
|
22.02.2007, 13:00 | #2 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Эмн... Может я плохо обрисовал задачу? Или так вообще не делают? =)
|
22.02.2007, 20:21 | #3 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Нашел у немцев.
http://www.fh-wedel.de/~bek/asm/uebss02/ueb08a.html У меня в принципе всё так же. Может память как-то зарезервировал не так. Не понимаю пока. |
22.02.2007, 20:23 | #4 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
страница в которой находятся данные должна быть c флагом доступа PAGE_WRITE
|
22.02.2007, 20:35 | #5 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Как этот флаг выставляется?
В коде этого немца не увидел, вроде, команд о разрешении доступа и тому подобного. Вот. Последний раз редактировалось SteelRat; 22.02.2007 в 20:42. |
23.02.2007, 10:48 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Выставляется через VirtualProtect
|
24.02.2007, 02:19 | #7 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Попытался. Делать надо так?
VirtualProtect(OutBufPtr, Width*Height, PAGE_WRITE, OldOutBufPtr); Во-первых, PAGE_WRITE нигде не определено. Пытался писать различные числовые значения - не угадал. Во-вторых. В Helpe к Дельфи нигде не нашел ни описания VirtualProtect, ни PAGE_WRITE - ничего. Параметры функции нашел лишь потому, что она описана в юните Windows. И для чего нужен последний параметр функции? У меня Дельфи 7. |
25.02.2007, 15:56 | #8 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
пробуй PAGE_READWRITE последний параметр функции нужен для того чтобы сохранить туда старые атрибуты защиты
Код:
|
25.02.2007, 18:44 | #9 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Работать работает, но доступа как не было так и нет. Нутром чую - ошибка где-то мелкая-мелкая. Не пойму пока ничего.
|
25.02.2007, 23:09 | #10 | |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Цитата:
Но не помогло. =) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись дисков в 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 |