डेल्फी 2007 मदद से हवाला देते हुए:
उपयोग GetEnumName प्रतीकात्मक नाम है कि यह कोड में प्रतिनिधित्व में एक डेल्फी प्रगणित मूल्य कन्वर्ट करने के लिए।
इसका मतलब है कि आप उस उद्देश्य के लिए इसका इस्तेमाल नहीं कर सकते हैं, TVarData.VType के रूप में एक enumerated मूल्य नहीं है, लेकिन एक पूर्णांक जो System.pas में स्थिरांक कि से लिया जाता है में से एक के लिए सेट है विंडोज एसडीके wtypes.h फ़ाइल। GetEnumName() के स्रोत को देखें, यह तुरंत पूर्णांक के मान वाले स्ट्रिंग को वापस कर देता है।
संपादित करें:
वहाँ TVarData.VType
की स्ट्रिंग प्रतिनिधित्व आप स्ट्रिंग प्रतिनिधित्व मैन्युअल रूप से निर्धारित कर सकते हैं पाने के लिए किसी भी अन्य तरीका है। सबसे पहले आपको इस बात से अवगत होना चाहिए कि उस पूर्णांक में एन्कोड किए गए जानकारी के कई बिट्स हैं, इसलिए एक साधारण केस स्टेटमेंट या सरणी लुकअप काम नहीं करेगा। निचले 12 बिट्स प्रकार मुखौटा हैं, और ऊपरी बिट्स इस बारे में जानकारी एन्कोड करते हैं कि यह एक वेक्टर या सरणी प्रकार है या नहीं और यह संदर्भ द्वारा दिया गया है या नहीं। महत्वपूर्ण हिस्से हैं:
const
varTypeMask = $0FFF;
varArray = $2000;
varByRef = $4000;
तो तुम जैसे कुछ कर सकता है: यह एक enum नहीं है के बाद से
function VariantTypeName(const AValue: TVarData): string;
begin
case AValue.VType and varTypeMask of
vtInteger: Result := 'integer';
// ...
end;
if AValue.VType and varArray <> 0 then
Result := 'array of ' + Result;
if AValue.VType and varByRef <> 0 then
Result := Result + ' by ref';
end;
मैं चिह्नित करने के लिए सुझाव है स्वीकार किए गए The_Fox द्वारा उत्तर। – mghie