> -- Цитата:
> А почему надо заботиться о размещении в памяти объекта, на который указывает ptr. Нет возможности просто указать с каким объектом ему работать?

Тогда я не понимаю вопроса...

Смотрите:

PROCEDURE Netbios* (P:PNCB): CHAR;

Если процедура объявляется так, то в точке ее вызова мне придется откуда-то брать динамически распределенный NCB. Или брать SYSTEM.ADR от стековой переменной и приводить его тип через SYSTEM.VAL. Но использовать SYSTEM в "нормальном" коде не следует вообще - это и несовместимость, и нарушение безопасности. А откуда мне взять динамически распределенный NCB? NEW с [untagged]-записями не работает, значит, нужно обращаться к WinApi.VirualAlloc или системному менеджеру кучи. А потом прибивать эту память. Целый букет гемора + потеря скорости.

Если я объявляю PROCEDURE Netbios* (VAR ncb: TNCB): CHAR, то
я могу сделать как
VAR ncb: NCB; BEGIN Netbios(ncb),
так и VAR pncd: PNCB; ... Netbios(pncb).
То есть, получаем штатный вариант, работающий с любой памятью, при том безопасно.