В Delphi XE2 так и не сделали человеческий, блин, RAII, с контролем над инициализацией (Interface и Variant инициализируются nil, нельзя вызвать метод, пока переменная не инициализирована; у record есть деструкторы, но нет конструкторов) и копированием (у Interface инкрементируется счётчик ссылок, не всегда то, что нужно), и это всё несмотря на то, что в RTL всё необходимое давно есть! Лечится, допустим, оборачиванием interface в record с методами. Методы record сначала проверят, а не nil ли интерфейсное поле, инициализируют при необходимости. Далее, если метод собрался что–то менять, можно сделать Copy On Write. И только после этого передавать вызов интерфейсному объекту. Прям хоть модули для m4 пиши, чтоб одно и то же не копипастить вручную.
Несмотря на это, Delphi нельзя назвать застойным. В нём–таки сделана поддержка Unicode, COFF OBJ, Win64, всего того, что очень долго ждали.