В другом question я обнаружил, что функция Assigned() идентична Pointer <> nil. Мне всегда казалось, что Assigned() обнаруживает эти оборванные указатели, но теперь я узнал, что это не так. Висячие указатели - это те, которые, возможно, были созданы в какой-то момент, но с тех пор были свободны и еще не были привязаны к nil.
Если Assigned() не может обнаружить оборванных указателей, то что может? Я хотел бы проверить свой объект, чтобы убедиться, что это действительно действительный созданный объект, прежде чем я попытаюсь с ним работать. Я не использую FreeAndNil, поскольку многие рекомендуют, потому что мне нравится быть прямым. Я просто использую SomeObject.Free.
Нарушения доступа - мой самый злейший враг - я делаю все возможное, чтобы предотвратить их появление.