Отладка ошибок нарушения прав доступа?

Какими советами вы можете поделиться, чтобы помочь найти и исправить нарушения доступа при написании приложений в Delphi?

Я считаю, что нарушения доступа обычно вызваны попытками доступа к чему-то в памяти, что еще не b Создан ли объект, например, объект и т. д.?

Мне сложно определить, что вызывает нарушения доступа, а затем где внести необходимые изменения, чтобы попытаться остановить / исправить их.

Примером является личный проект, над которым я работаю. сейчас. Я храню в свойстве TTreeView Node.Data некоторые данные для каждого узла. Узлы могут быть выбраны и экспортированы несколько раз (при экспорте выполняется итерация по каждому выбранному узлу и сохраняются определенные данные в текстовый файл - информация, сохраненная в текстовом файле, хранится в файле nodes.data). Файлы также можно импортировать в Treeview (сохраняя содержимое текстовых файлов в node.data).

Проблема в этом примере заключается в том, что если я импортирую файлы в Treeview, а затем экспортирую их, это работает отлично.Однако, если я добавляю узел во время выполнения и экспортирую их, я получаю:

«Нарушение прав доступа по адресу 00405772 в модуле Project1.exe. Чтение адреса 00000388».

Мои мысли об этом должны быть такими, какие я есть назначение данных созданным узлам, возможно, иначе, чем я назначаю их при импорте, но мне все это кажется нормальным. Нарушение прав доступа обнаруживается только при экспорте, и этого никогда не происходит с импортированными файлами.

Я НЕ ищу исправления для приведенного выше примера, а в основном ищу советы / подсказки, как найти и исправить такие типы ошибок. Я не часто получаю нарушения прав доступа, но когда я сталкиваюсь с ними, их действительно сложно отследить и исправить.

Так что советы и подсказки были бы очень полезны.

21
задан Brian Tompsett - 汤莱恩 16 January 2016 в 19:08
поделиться