Miklix

डायनामिक्स एएक्स २०१२ मा म्याक्रो र एसटीआरएफएमटीसँग स्ट्रिङ ढाँचा

प्रकाशित: २०२५ फेब्रुअरी १६: ००:५२:०२ UTC

यस लेखले डायनामिक्स एएक्स २०१२ मा केही अनौठो व्यवहारको वर्णन गर्दछ जब एसटीआरएफएमटीमा ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्दा, साथै यसको वरिपरि कसरी काम गर्ने भन्ने उदाहरणहरू।


यो पृष्ठलाई सकेसम्म धेरै मानिसहरूको पहुँचयोग्य बनाउनको लागि अंग्रेजीबाट मेसिन अनुवाद गरिएको थियो। दुर्भाग्यवश, मेसिन अनुवाद अझै पूर्ण प्रविधि होइन, त्यसैले त्रुटिहरू हुन सक्छन्। यदि तपाईं चाहनुहुन्छ भने, तपाईं यहाँ मूल अंग्रेजी संस्करण हेर्न सक्नुहुन्छ:

String Formatting with Macro and strFmt in Dynamics AX 2012

यस पोस्टमा जानकारी डायनामिक्स एएक्स 2012 आर 3 मा आधारित छ। यो अन्य संस्करणका लागि मान्य हुन सक्छ वा नहुन पनि सक्छ ।

मैले हालै एसटीआरएफएमटी प्रकार्यको साथ एक मुद्दाको सामना गरें जसले मलाई केहि समयको लागि चकित पार्यो। सबैभन्दा अचम्मलाग्दो भाग यो थियो कि मैले केहि अजीब संयोगले एक्साप्टा / डायनामिक्स एएक्स विकासकर्ताको रूपमा मेरो धेरै वर्षहरूमा पहिले कहिल्यै सामना गरेको छैन।

मुद्दा यो थियो कि मैले एसटीआरएफएमटी प्रकार्यको लागि ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्ने प्रयास गरें र यसले काम गरेन। यसले % परिमितिहरूलाई पूर्ण रूपमा उपेक्षा गर् यो र स्ट्रिङको बाँकी भाग मात्र फर्कायो।

यसलाई हेरेपछि, मैले पत्ता लगाएँ कि म्याक्रोहरू आफैलाई स्ट्रिंगहरू ढाँचाबद्ध गर्न प्रयोग गर्न सकिन्छ, जुन मलाई थाहा नभएको कुरा पनि थियो। ओह ठीक छ, यो सधैं केहि नयाँ सिक्न राम्रो छ, तर म अझै पनि धेरै आश्चर्यचकित थिएँ कि म पहिले यो भरमा आएको थिइनँ।

मूलतः, यस प्रकारको केहि

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

काम गर्दैन किनभने म्याक्रोमा % सङ्केतहरू वास्तवमा म्याक्रोको आफ्नै स्ट्रिङ ढाँचा सुविधाहरूका लागि प्रयोग गरिन्छ । यस अवस्थामा, एसटीआरएफएमटी प्रकार्यले ढाँचा स्ट्रिङलाई "--" को रूपमा हेर्नेछ र यसैले मात्र यसलाई फिर्ता गर्नेछ।

केहि यस्तो छ:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

काम गर्नेछ, तर सम्भवतः तपाईं यसलाई चाहनुहुन्छ तरिका छैन. तीन चरहरूको मानहरू आउटपुट गर्नुको सट्टा, यसले यसको सट्टा चरहरूको नामहरू आउटपुट गर्नेछ, यस मामलामा "सेल्सआईडी-आइटमआईडी-लाइननम"। (ध्यान दिनुहोस् कि मैले म्याक्रोमा प्यारामिटरहरू पास गर्दा अल्पविराम पछि खाली स्थानहरू राखेन, किनकि म सामान्यतया विधि कलहरूमा गर्छु। यसको कारण यो हो कि म्याक्रोले वास्तवमा त्यस्ता खाली स्थानहरू पनि प्रयोग गर्नेछ, त्यसैले आउटपुट "सेल्सआईडी- आइटमआईडी- लाइननम" हुनेछ यदि मैले गरें भने)।

वास्तवमा एसटीआरएफएमटीसँग ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्न, तपाईँले ब्याकस्ल्याशहरूसँग प्रतिशत सङ्केतहरूबाट बच्न आवश्यक छ, जस्तै:

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

यो वास्तवमा काम गर्नेछ जस्तै कि तपाईले ढाँचा स्ट्रिङ सीधै प्रदान गर्नुभएको थियो।

यो सानो कामले उदाहरणहरू देखाउँछ:

static void StrFmtMacroTest(Args _args)
{
    #define.FormatMacro('%1-%2-%3')
    #define.FormatMacroEscaped('\\%1-\\%2-\\%3')
    SalesId salesId = '1';
    ItemId  itemId  = '2';
    LineNum lineNum = 3.00;
    ;

    info(#FormatMacro(salesId,itemId,lineNum));
    info(strFmt(#FormatMacro, salesId, itemId, lineNum));
    info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}
ब्लुस्कीमा सेयर गर्नुहोस्फेसबुक मा शेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Tumblr मा सेयर गर्नुहोस्X मा सेयर गर्नुहोस्लिंक्डइनमा सेयर गर्नुहोस्Pinterest मा पिन गर्नुहोस्

मिकेल बाङ क्रिस्टेनसेन

लेखकको बारेमा

मिकेल बाङ क्रिस्टेनसेन
मिकेल miklix.com का निर्माता र मालिक हुन्। उनीसँग एक पेशेवर कम्प्युटर प्रोग्रामर/सफ्टवेयर विकासकर्ताको रूपमा २० वर्ष भन्दा बढीको अनुभव छ र हाल उनी एक ठूलो युरोपेली आईटी निगममा पूर्ण-समय कार्यरत छन्। ब्लगिङ नगर्दा, उनी आफ्नो खाली समय विभिन्न रुचि, शौक र गतिविधिहरूमा बिताउँछन्, जुन केही हदसम्म यस वेबसाइटमा समेटिएका विषयहरूको विविधतामा प्रतिबिम्बित हुन सक्छ।