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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2015, 17:01   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Программа, работавшая на XP, выдает эксепшн

Запускаю EXE - пишет эксепшн EaccessViolation. В Дебагере ришет raised exception class EAccessViolation with message 'Access violation at adress 7702990 B in module 'USER32.dll'. Read od adress 00000001'. Process stoped. Use Step or Run to cintinue

Что это может быть?

Я пробовал запускать в режиме совместимости с XP - не помогло, но просто тот, кто дал мне программу, сказал, что она у него на ХП работала когда-то давно...
Krasi вне форума Ответить с цитированием
Старый 28.10.2015, 17:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Что-то читаете по нулевому указателю. Возможно, что в программе создавался/получался объект, который был доступен на хп, а дальше убрали/повысили требования.
p51x вне форума Ответить с цитированием
Старый 28.10.2015, 17:35   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код надо смотреть... Исходник.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2015, 19:35   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Krasi Посмотреть сообщение
Запускаю EXE - пишет эксепшн EaccessViolation. В Дебагере ришет raised exception class EAccessViolation with message 'Access violation at adress 7702990 B in module 'USER32.dll'. Read od adress 00000001'. Process stoped. Use Step or Run to cintinue

Что это может быть?

Я пробовал запускать в режиме совместимости с XP - не помогло, но просто тот, кто дал мне программу, сказал, что она у него на ХП работала когда-то давно...
Такое сообщение выдаётся обычно, если Вы не выделили память объекту. По умолчанию, компиль прытается записать модуль с адреса прерывания. Модуль большой, перехватчик событий винды "видит" нарушение и выдаёт соответствующее предупреждение.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.10.2015, 09:36   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Я код не могу в данном случае скинуть, потому что програ не моя. Поэтому придется как-то изощряться, может есть предложения?
Цитата:
не выделили память объекту
Можете тогда пару примеров дать, каким объектам и как нужно выделять память? Я, может, попробую память повыделять различным объектам, а вось поможет:D

А еще самое-то интересное, что я не знаю, действительно ли человек запускал эту программ на XP. Он просто безвозмездно ее дал и сказал, что запускал лет 5 назад на XP. Но я-то попробовал запустить скомпилированный еще им файл в режиме совместимости, какие только параметры не выставлял - не помогло. Может он что-то забыл или не досказал?

Последний раз редактировалось Krasi; 29.10.2015 в 09:39.
Krasi вне форума Ответить с цитированием
Старый 29.10.2015, 09:39   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можете тогда пару примеров дать, каким объектам и как нужно выделять память?
А как тебе это поможет, учитывая что:
Цитата:
код не могу в данном случае скинуть, потому что програ не моя
?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2015, 10:15   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может под отладкой запустить раз код есть и посмотреть где падает?(или его все же нет? а то туманно)

а так просто без кода прогу все равно не починить. разве что можете попробовать виртуалку с ХП.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.10.2015, 10:15   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Можете тогда пару примеров дать, каким объектам и как нужно выделять память?
Примеры то дать можно, но как сказал Stilet, чем это может помочь если исходников нет. Память объекту выделяется в исходниках например так:

Класс объекта *Объект = new Класс объекта;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.10.2015, 10:26   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

А может, как я говорил, прога запрашивает какой-то интерфейс, активикс, которые были на хп, не проверяет удачность и читает, хотя вернули нулл..
p51x вне форума Ответить с цитированием
Старый 02.11.2015, 09:36   #10
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А может проблема в том, что система у меня 64 бита, а программа писалась под 32 бита? Как можно этот момент профиксить?
Krasi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Волшебная строчка с функцией, которая магически выдает Эксепшн Krasi Общие вопросы .NET 1 22.10.2015 12:49
Что выдает программа? Мaрина Помощь студентам 6 24.05.2013 11:25
Программа выдает ошибку segion Паскаль, Turbo Pascal, PascalABC.NET 3 10.03.2011 04:57
Несколько попыток конекта к базе....., затем эксепшн sputnick Общие вопросы .NET 5 19.08.2010 12:29
DBLookUpCombobox эксепшн на Insertе с KeyValue назначенной вручную joker Компоненты Delphi 2 15.12.2009 07:23