मैं TValueTValue वापस स्ट्रिंग <--> बूलियन और पीछे
साथ arround खेल रहा हूँ मैं एक खाली परियोजना में इस कोड लिखा है:
uses
RTTI;
procedure TForm1.FormCreate(Sender: TObject);
var
s: string;
b: Boolean;
begin
s := TValue.From<Boolean > (True).ToString;
b := TValue.From<string > (s).AsType<Boolean>;
end;
लेकिन मैं स्ट्रिंग से वापस नहीं बदल सकते बूलियन करने के लिए; मुझे दूसरी पंक्ति में एक अवैध टाइपकास्ट अपवाद मिलता है।
मैं डेल्फी एक्सई का उपयोग कर रहा हूं लेकिन यह डेल्फी Xe6 में एक ही परिणाम है जो मुझे निष्कर्ष तक ले जाता है: मैं टीवील्यू गलत का उपयोग कर रहा हूं।
तो कृपया मैं क्या गलत कर रहा हूं।
'TValue.ToString() 'में बूलियन आरटीटीआई का विशिष्ट ज्ञान है और इस तरह के मान को स्ट्रिंग में बदलने के लिए' GetEnumName() 'को कॉल करना जानता है। 'TValue.AsType()' दूसरी तरफ, किसी भी 'स्ट्रिंग'-> एनम रूपांतरण को परिभाषित नहीं करता है (' System.Rtti.pas' में विशाल 'रूपांतरण [] [] 'सरणी देखें)। यह केवल एनम रूपांतरणों का समर्थन करता है जब स्रोत और dest प्रकार एक ही enum प्रकार होते हैं, या जब दोनों बूलियन प्रकार होते हैं (वे अलग बाइट आकार हो सकते हैं)। –