Выносить дринкера в глобальную переменную обязательное условие? Выглядит, извиняюсь, детским садом. Хотя, видимо, ты студент и это учебная задача, да?
Вообще тут напрашивается, что класс Пати порождается от TList и в качестве элементов списка содержит в себе элементы типа Дринкер, которые на лету создаются с помощю New(), хотя и Дринкер хорошо бы сделать классом ...
Ну, ладно, это философия, а что касается проблемы
"нужно, чтобы создавалась запись Vasya, которая указана в глобальном var, а создается запись Drinker, которая указана в принимающих параметрах функции CreateDrinker" - немного измени параметры функции - передавай параметр Drinker по ссылке и будет тебе щастье.
TParty.CreateDrinker(var Drinker: TDrinker; fname: string; a: integer): string;
Если бы Дринкер был классом, а не рекордом, то и
var писать не нужно было бы - объекты в Дельфи всегда передаются по ссылке.
Внимательно почитай про способы передачи параметров в функции - "по значению" и "по ссылке". Ну и в объектах бы, конечно, надо разобраться.