в первом случае кастуешь указатель на объект к тайлу
во втором случае кастуешь указатель на
коллекцию обьектов, что неверно, преобразовать тип не удалось, в результате указатель на TTile становится null
и еще
For Local i:Int = 1 To p.Length
...[i - 1]...
|
Юзай Until:
For Local i:Int = 0 Until p.Length
...[i]...
|