मैंने अपने अनुप्रयोगों के लिए एक स्क्रिप्टभाषा लिखी और मेरा लक्ष्य स्क्रिप्ट में डेल्फी से किसी भी प्रकार को प्रकाशित करना संभव बनाना है। मैं इस कार्य को स्वचालित करने के लिए आरटीआई का उपयोग करता हूं। स्क्रिप्ट से किसी विधि को खोजने और कॉल करने के लिए कक्षाओं जैसे किसी भी उदाहरण के लिए मैं निम्नलिखित कोड का उपयोग करता हूं।डेल्फी - प्रति नाम रिकॉर्ड विधि को आमंत्रित करें
var Info : TRttiType;
Meth : TRttiMethod;
Param : TArray<TValue>;
Result : TValue;
AnyClass : TClass;
begin
...
Info := RttiContext.GetType(AnyClass);
Meth := Info.GetMethod('AMethod');
Setlength(Param, 1);
Param[0] := TValue.From<Integer>(11);
Result := Meth.Invoke(ClassInstance, Param);
...
end;
लेकिन एक रिकार्ड इस कोड काम नहीं करता है के साथ, क्योंकि TRttiMethod प्रकार रिकॉर्ड प्रकारों के लिए एक आह्वान() विधि प्रदान नहीं करता है। मैं रिकॉर्ड प्रकार से Info.GetMethod ('AMethod') द्वारा विधि infos तक पहुंच सकता हूं।
TRecordType = record
Field1, Field2 : single;
procedure Calc(Value : integer);
end;
तो किसी को पता है एक रिकार्ड से एक विधि आह्वान करने के लिए अगर मैं methodName या methodaddress है एक तरह से:
उदाहरण के लिए मैं इस तरह की एक रिकॉर्ड है?
क्या आपने अभी [DWScript] (http://code.google.com/p/dwscript/) को फिर से शुरू किया था? –
संकेत के लिए धन्यवाद, लेकिन मुझे डीडब्ल्यूस्क्रिप्ट पता है। मेरी भाषा को एक डेल्फी प्रोग्राम के लिए एक स्क्रिप्ट करने योग्य इंटरफ़ेस के रूप में लक्षित किया गया है, जहां AObject.AFunction.AObject.DoSomething की तरह संरचनाएं संभव हैं। – DragonFlyOfGold
मैंने सोचा था कि DWScript वह सब कर सकता है, लेकिन शायद मैं इतना बताते हुए रिकॉर्ड पर तरीकों के लिए कोई RTTI है कि वहाँ पर यहाँ गलत हूँ –