Не совсем понятно, почему nil в TestComplete трактуется как Integer (со значением 0, т.е. инициализация переменной типа int по умолчанию). Более того, если объекту типа OleVariant присвоить значение nil, то объект приводится к типу Integer.
Вот пример. Можно поставить точку останова на Log.Message и посмотреть значение и тип obj и nil в WatchList.
Procedure test; var obj : OleVariant; begin obj : = nil; Log.Message(obj); end;
В связи с этим вопрос, как обнулять ссылку на объект или, к примеру, вызывать методы из .Net Assembly c передачей в параметрах nil - в обоих случаях проводится неявное приведение к типу int со значением 0.
Также нельзя проверить на null:
Procedure test321; var obj : OleVariant; begin obj : = Sys.Process('TestProcess').AppDomain('TestProcess.exe').dotNET.TestNamespace.TestClass.SomeMethod; if obj = nil then // Проверка не проходит в случае, если метод возвращает null! Log.Message('Method returns null'); end;