Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access Violation [D7]


AlDun ©   (2006-08-31 03:55:00) 

Здравствуйте!
Я пишу некоторые программы на Delphi 7 Enterprice. В WinME все работало удовлетворительно.
Теперь я поставил WinXP Pro SR2 и многие мои подпрограммы и функции перестали работать (в
частности, функции WinAPI32). При этом выводится сообщение:
Exception EAccess Violation in module ntddll.dll at xxxxxxxx.
Access violation at address xxxxxxxx in module 'ntdll.dll'.
Write of address xxxxxxxx.
Очень прошу экспертов объяснить, в чем дело (в имеющейся у меня литературе вычитал, что
такое исключение генерируется при попыте обращения по адресу без соответствующего права
доступа, - если это так, то как установить это право на домашнем компьютере, где
администратором, естественно, являюсь я).
Заранее благодарен, AlDun.


C@N   (2006-09-01 19:59:00) [1]

или юзаешь функции которые катят в 9Х, но не катят под NT!!!
Почитай справку))) я сталкивался в этом аспекте с вольтэйшнеррорами...


Desdechado   (2006-08-31 10:55:00) [2]

Обычно это попытка работы с неинициализированными указателями (часто буферами при работе с API-функциями). Или обращение по адресам уже разрушенных объектов.


han_malign   (2006-08-31 09:47:00) [3]

Если ищешь телепатов, тут - как специально - спам-ветка появилась магическая...


han_malign   (2006-08-31 09:46:00) [4]

А посмотреть в какой функции AV не судьба? Отладчиком пройтись или хотя  бы, вместо xxxxxxxx - реальные значения дать? У нас телепатичиские способности пока не очень сильно развиты.


medved_68   (2006-08-31 08:49:00) [5]


> Теперь я поставил WinXP Pro SR2 и многие мои подпрограммы
> и функции перестали работать (в
> частности, функции WinAPI32). При этом выводится сообщение:
>
> Exception EAccess Violation in module ntddll.dll at xxxxxxxx.
>
> Access violation at address xxxxxxxx in module 'ntdll.dll'.
>
> Write of address xxxxxxxx.
> Очень прошу экспертов объяснить, в чем дело

Скажем так: "Программа работающая нормально на одной ОС и не работающая нормально на другой - не есть правильно написанная программа"". У меня программа для прошивки контроллеров, разработанная не  дилетантами, а спецами на 98 работает, а на 2000/ХР ругается на слишком привилегированные команды (типа прямого доступа к портам). Так что это нормальное явление повсюду и необходимо просто пройти свои программы, которые работали под МЕ нормально, а под ХР не захотели, отладчиком и посмотреть где ты забыл выделить память под переменные. Ибо в ХР требования несколько более жесткие чем в той же 98/МЕ


Don Nikola   (2006-08-31 07:26:00) [6]

>такое исключение генерируется при попыте обращения по адресу без >соответствующего права доступа, - если это так, то как установить это право >на домашнем компьютере

Я конечно могу ошибаться, но по-моему это несколько разные прова доступа.
Скорее всего пользуешь массивы и выходишь за их границы, возможно работаешь с asciiz строками(это которые pchar) и забываешь добавить #0 в конец при передаче строки в апишную функцию, возможно пытаешься писать данные в код, вариантов для вызова access violation очень много.
Для примера приведи минимальный исходный код, который вызывает ошибку. Хотя может быть это какой-то стандартный баг, я с XP практически не работал, так что не знаю.


Наверх

Титульная страница Поиск, карта сайта Написать письмо