में जेनेरिक से वेरिएंट में मैं कैसे परिवर्तित कर सकता हूं मेरे पास एक डेल्फी जेनेरिक क्लास है जो सामान्य प्रकार के तर्क के साथ एक फ़ंक्शन का खुलासा करती है। इस फ़ंक्शन के अंदर, मुझे सामान्य प्रकार का उदाहरण किसी अन्य ऑब्जेक्ट पर एक वेरिएंट प्रकार की अपेक्षा करने की आवश्यकता है। इसके समान:डेल्फी
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) का उपयोग करने का प्रयास किया .सविरिएंट। यह अभिन्न प्रकार के लिए काम किया, लेकिन बूलियन के लिए उड़ा दिया। मुझे काफी नहीं लगता है, क्योंकि आम तौर पर मैं एक संस्करण में एक बूलियन मान असाइन करने में सक्षम होता हूं ...
क्या यह रूपांतरण करने का कोई बेहतर तरीका है? मुझे केवल सरल अंतर्निर्मित प्रकारों (गणनाओं और अभिलेखों को छोड़कर) के लिए काम करने की आवश्यकता है
आप प्रकार की एक स्थानीय चर बनाने की कोशिश की है 'संस्करण', इसे 'कुछ वैल्यू' असाइन करें, और उसके बाद स्थानीय चर को 'FMyIntf.DoStuff()' पर पास करें? –
हां। मैं ऐसा नहीं कर सकता क्योंकि 'टी' से 'वेरिएंट' तक कोई वैध कलाकार नहीं है ... –