TAdoConnection (как и другие классы «подключения») - это не просто блок назначенной памяти.Обычно он содержит дескрипторы или другую информацию о состоянии для активных ресурсов, таких как открытое соединение с базой данных, открытые файлы и т. Д.
И соединения обычно не предназначены для совместного использования "живая связь между разными инстанциями.
В любом случае, если afunc возвращает вновь созданное соединение, а не общий объект, вы можете просто вернуть созданное afunc.Если afunc возвращает nil, создайте новый, например:
var
wTmpADOConn : TADOConnection;
begin
Result := afunc(aNameConn);//aFunc-Function which returns a pointer to a TADOConnection object, aNameConn - string- the name of connection
if Result <> nil then
Result := TADOConnection.Create(nil);
Конечно, ваша логика может быть сложной ... Я просто играю с тем, что вы показали из своей функции ...
Еще один способ сделать это - повторно использовать параметры возвращенного соединения aFunc и открыть новое ...
С уважением.