Еще один момент, о котором стоит заботиться, - это использование типов Variant со строками и тестирование функции VarType для строк: нужно использовать varUString вместо varString.
Предполагая, что AValue имеет тип Variant и имеет присваивается строковое значение Unicode, следующее не будет работать:
if VarType(AValue) = varString then ...
и его необходимо изменить на
if VarType(AValue) = varUString then ...