Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Access Violation   Найти похожие ветки 

 
AlDun   (2006-08-31 03:55) [0]

Здравствуйте!
Я пишу некоторые программы на 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.


 
Don Nikola ©   (2006-08-31 07:26) [1]

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

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


 
medved_68 ©   (2006-08-31 08:49) [2]


> Теперь я поставил 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/МЕ


 
han_malign ©   (2006-08-31 09:46) [3]

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


 
han_malign ©   (2006-08-31 09:47) [4]

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


 
Desdechado ©   (2006-08-31 10:55) [5]

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


 
C@N ©   (2006-09-01 19:59) [6]

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



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
2-1157483491
Серый
2006-09-05 23:11
2006.09.24
Базы данных


10-1123433445
Nick Denry
2005-08-07 20:50
2006.09.24
Все тот же ActiveX....


15-1156922134
Змей
2006-08-30 11:15
2006.09.24
литература по апи


2-1157548368
svt
2006-09-06 17:12
2006.09.24
Как можно в 20 компонентах edit обнулить text?


3-1153331464
HNN
2006-07-19 21:51
2006.09.24
Поиск текста в таблице