Rozumím. Osobně bych nikdy nikde nepřiřazoval nil do dynamického pole. Sice je to možné, ale prostě bych to nedělal. Já když mám takovouhle funkci, tak ji vždy vytvářím podle následujícího vzoru:
Function Selection(SelectionParameter; out SelectedObject): Boolen;
SelectionParameter mi určuje co chci vybrat (v tvém případě string určující pole). Pokud funkce vrátí true, tak SelectedObject obsahuje vybranou věc, ale pokud vrátí false, tak je SelectedObject nedefinován, nesmím ho dále použít a nesmím o něm vůbec nic předpokládat.
Být tebou, napsal bych to podobně.