Если указатель указывает на вариант, то его тип является PVariant.Приведите его к этому типу, а затем разыменуйте:
Result := PVariant(FAddress)^;
Еще лучше, объявите FAddress
с правильным типом для начала, и тогда вам не нужно вводить тип:
var
FAddress: PVariant;
Result := FAddress^;
Компилятор считает вашу попытку приведения типа недопустимой, поскольку тип Variant больше, чем Pointer.Компилятор не знает, где взять дополнительные данные для создания полного значения Variant.И если приведение типа было допустимым, то использование оператора ^
на Вариантах все равно не допускается.Возможно, вам это сошло с рук:
Result := Variant(FAddress^);
Мне это никогда не нравилось;если FAddress - нетипизированный указатель, то разыменование дает значение без какого-либо размера или типа, и просто странно приводить такие типы.