2011-10-20 8 views
5

मैं वास्तव में एक सामान्य विधि आवेदक को लागू करने के लिए आरटीई का उपयोग करने की कोशिश कर रहा हूं। यह इस तरह काम करना चाहिए:डेल्फी एक्सई में इसके नाम से कक्षा प्रकार संदर्भ कैसे प्राप्त करें?

  • मैं वर्ग के नाम, विधि का नाम, और तर्क
  • invoker इस वर्ग की निर्दिष्ट विधि लागू

तो मैं द्वारा अपना काम करना होगा प्रदान करेंगे अपनी आरटीआई जानकारी प्राप्त करने के लिए कक्षा संदर्भ की आवश्यकता है और जिस विधि को मैं आमंत्रित करना चाहता हूं उसकी तलाश करें।

क्या कक्षाओं की कक्षा संदर्भ सूची को लागू किए बिना ऐसा करने का कोई तरीका है जिसके साथ मैं काम करना चाहता हूं?

+0

आप कक्षा के उदाहरण को पकड़ने की योजना कैसे बना रहे हैं? –

+0

मैं किसी ऑब्जेक्ट को तुरंत चालू कर सकता हूं कि मुझे क्लास संदर्भ – Haruki

उत्तर

8

अपने नाम का उपयोग कर कक्षा संदर्भ प्राप्त करने के लिए आपको कक्षा के नाम से गुजरने वाले TRttiContext.FindType फ़ंक्शन का उपयोग करना होगा और AsInstance संपत्ति का उपयोग करके इंस्टेंस पुनर्प्राप्त करना होगा और फिर आप कक्षा के निर्माता को कॉल कर सकते हैं।

var 
    Instance : TRttiInstanceType; 
    ctx : TRttiContext; 
    mClass : TValue; 
begin 
    ctx := TRttiContext.Create; 
    Instance := ctx.FindType(ClassName).AsInstance; //ClassName is something like 'Classes.TStringList'; 
    mClass := Instance.GetMethod('Create').Invoke(Instance.MetaclassType,[]); 

    //do your stuff here 


end; 
+0

मिल गया है, यह आपके काम के लिए बहुत बहुत धन्यवाद! – Haruki

+0

क्या यह देखने का कोई तरीका है कि मेरे पास इस वर्ग का कोई उदाहरण पहले से ही तत्काल है और इस ऑब्जेक्ट को उपयोग के लिए प्राप्त करें? – Haruki

+2

यह एक और प्रश्न के लिए है, लेकिन आरटीटीआई का उपयोग करना संभव नहीं है। – RRUZ

संबंधित मुद्दे