У меня есть приложение POS, написанное на Delphi, которое работает до сих пор.Нарушение доступа (Delphi) - за исключением первого прогона
Мне пришлось добавить клиента webservice, чтобы иметь документы, проверенные правительством, и хотя я никогда раньше не работал с WebServices/Encryption, мне это удалось (благодаря интернету действительно).
Когда я запускаю программу и создаю один из этих документов, она отлично проверяется (к веб-сервису обращаются, конверт SOAP с некоторыми данными отправляется, и ответ с сервера получен без каких-либо проблем).
Проблема в том, что если я создаю другой документ, когда я пытаюсь его проверить, я получаю сообщение об ошибке «Нарушение доступа на 0x07e7bcb5: чтение адреса 0x00000012».
Моя процедура проверки является функцией внутри DLL. До того, как он был внутри DLL, у меня был весь код внутри основного проекта, но он разбил мою программу: если бы я проверил документ, ответ пришел бы, но я бы получил нарушение доступа, когда я закончил программу, или если я пытался проверить другой. Я также попытался загрузить DLL динамически, поэтому процесс проверки будет «начинать с нуля» при каждом запуске, но это было бесполезно.
Я пытался отладить это, но я просто не могу его получить. Выполняя шаг за шагом, он терпит неудачу в какой-то строке, я прокомментирую это, и следующий прогон завершится неудачно в совершенно другом месте. Я тоже попробовал EurekaLog, но я не мог понять, что делать с информацией, которую он мне дал (я никогда с ним не работал).
Любое направление, которое я должен брать?
спасибо! Нуну Picado
EDIT: я, вероятно, следует отметить, что я использую, чтобы получить доступ к веб-сервиса: - THTTPReqResp и Wininet для связи - IXMLDocument для создания SOAP Envelope - LibEay32 для encript некоторые данные, необходимые вебсервис - TZDB, чтобы получить универсальное время от веб-сервера на основе - CAPICOM 2.0 загрузить сертификат, необходимый для общения
Прежде всего, поместите madExcept, EurekaLog или подобное в ваше приложение. Затем собрать трассировку стека, связанную с AV. Затем отлаживайте его. Я вижу, что вы пытались с EurekaLog. Ну, вам нужно продолжать пытаться. –