Суть в том, что многое завист от логики компилятора.
Если компилятор "будет удовлетворен" результатом проверки :
Assigned(aNode) для aNode=nil, то "все в порядке"
А если "пойдет дальше" и проверит вторую часть условия :
Assigned(aNode.Parent) при aNode=nil, то может быть RunTime-ошибка.
Честно сказать, я не знаю логику "нынешних" компиляторов Delphi.
Но в старых версиях такой конфуз случался.
Поэтому стараюсь (на всякий случай) исключать такие потенциально опасные места на уровне исходников.
|