У меня есть общий класс Delphi, который предоставляет функцию с аргументом родового типа. Внутри этой функции мне нужно передать экземпляр типового типа на другой объект, ожидающий тип Variant. Аналогично этому:Как преобразовать из generic в Variant в Delphi
type
IMyInterface = interface
DoStuff(Value: Variant);
end;
TMyClass<T> = class
FMyIntf: IMyInterface
procedure DoStuff(SomeValue: T);
end;
[...]
procedure MyClass<T>.DoStuff(SomeValue: T);
begin
FMyIntf.DoStuff((*convert SomeValue to Variant here*));
end;
Я пробовал использовать Rtti.TValue.From (SomeValue) .AsVariant. Это работало для интегральных типов, но взорвалось для булевых. Я не совсем понимаю, почему, поскольку обычно я мог бы присвоить логическое значение Variant ...
Есть ли лучший способ сделать это преобразование? Мне нужно только работать для простых встроенных типов (за исключением перечислений и записей)
Вы пытались создать локальную переменную типа 'Variant', присвойте ему' SomeValue', а затем передайте локальную переменную в 'FMyIntf.DoStuff()'? –
Да. Я не могу этого сделать, потому что нет никакого действительного отбрасывания от «Т» до «Варианта» ... –