2012-06-04 22 views
5

उदाहरण के लिए, मैं डेटाबेस में किसी विधि का शरीर कैसे संग्रहीत कर सकता हूं और बाद में इसे चला सकता हूं? (मैं डेल्फी XE2 उपयोग कर रहा हूँ, शायद RTTI में मदद मिलेगी।)मैं डेटाबेस में संग्रहीत कोड कैसे निष्पादित कर सकता हूं?

+4

एक DLL में कोड रखो। –

+1

@ डेविड हेफरन और डेटाबेस में डीएलएल स्टोर करें? ;) – GolezTrol

+6

क्या आपने इस कार्य के लिए कुछ स्क्रिप्टिंग इंजन का उपयोग करने पर विचार किया है? – Linas

उत्तर

6

RTTI एक पूर्ण भाषा अनुवादक नहीं है। डेल्फी एक संकलित भाषा है। आप इसे लिखते हैं, इसे संकलित करते हैं, और केवल अपनी बाइनरी वितरित करते हैं। जब तक आप Embarcadero नहीं हैं, तो आपके पास DCC32 (कमांड लाइन कंपाइलर) वितरित करने का अधिकार नहीं है।

हालांकि, JVCL में एक डेल्फी जैसी भाषा सबसेट शामिल है जो "JvInterpreter" नामक एक बहुत ही आसान उपयोग घटक में लिपटा हुआ है। आप कुछ कोड (पास्कल के रूप में) लिख सकते हैं और इसे डेटाबेस में रख सकते हैं। फिर आप डेटाबेस से खींच सकते हैं कि "उस कोड को चलाएं" (व्याख्या की गई, संकलित नहीं)। आमतौर पर ये प्रक्रियाएं होनी चाहिए जो आपके कोड में विधियों को कॉल करें। आपको कुछ "रैपर" लिखना है जो संकलित एपीआई का पर्दाफाश करते हैं जिन्हें आप दुभाषिया को बेनकाब करना चाहते हैं (लाइव डेटा तक पहुंच प्रदान करें, या डेटाबेस कनेक्शन ऑब्जेक्ट्स, या टेबल/क्वेरी ऑब्जेक्ट्स)। आप सोच रहे हैं कि यह सही सही लगता है? खैर, यह एक जाल है।

कुछ "the configuration complexity clock" कहा जाता है से सावधान रहें। आप अभी 9 बजे पहुंचे हैं, और यही वह जगह है जहां बहुत दर्द और पीड़ा शुरू होती है। जैसे कि आपको कोई समस्या हो, और आप इसे नियमित अभिव्यक्तियों के साथ हल करते हैं, और "अब आपको दो समस्याएं हैं", आपके ऐप में स्क्रिप्टिंग और डीएसएल जोड़ने से एक समस्या को हल करने और कई अन्य बनाने का एक तरीका है।

जबकि मुझे लगता है कि "डेटाबेस ब्लॉब फ़ील्ड में संग्रहीत डीएलएल" विचार बुरा है, और बेतुका है, मुझे लगता है कि अनुप्रयोगों के लिए स्क्रिप्टिंग और डोमेन-विशिष्ट भाषाओं के इच्छुक विकल्प भी बहुत दर्द के लिए पूछ रहे हैं। अपने आप से पहले पूछें कि क्या कोई अन्य सरल समाधान काम कर सकता है। फिर YAGNI सिद्धांत लागू करें (आपको इसकी आवश्यकता नहीं है) और KISS (Keep-it-simple-smartguy)।

दो बार लगता है कि तुम आप अपने प्रश्न में करने के बारे में क्या कह रहे हैं की तरह कुछ को लागू करने से पहले।

+0

कृपया सही ढंग से उद्धरण दें: KISS = इसे सरल बेवकूफ रखें ;-) – dummzeuch

+1

मुझे पूरा यकीन है कि वॉरेन सटीक अर्थ जानता है। यह इस तरह से कम कठोर लगता है। –

+0

लियोनार्डो मेरी बहाव को पकड़ रहा है। –

2

आपका सबसे अच्छा विकल्प है, IMHO, एक पटकथा इंजन का उपयोग और डेटाबेस में स्क्रिप्ट भंडारण है।

वैकल्पिक रूप से आप एक dll में कोड डाल दिया और डेटाबेस में कि dll डाल सकता है। संसाधन से एक डीएल लोड करने के लिए कोड है और इसे संसाधित करने के लिए कोड है ताकि इसका उपयोग किया जा सके जैसे लोड लोडरब्री का उपयोग करके लोड किया गया था, उदा। in dzlib। मुझे वास्तव में पता नहीं है कि किसी भी डीएल के साथ काम करता है और विंडोज के किस संस्करण में, लेकिन यह मैंने कोशिश की है।

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

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