Miklix

डायनॅमिक्स एएक्स 2012 मध्ये मॅक्रो आणि एसटीआरएफएमटीसह स्ट्रिंग फॉरमॅटिंग

प्रकाशित: १६ फेब्रुवारी, २०२५ रोजी १२:४९:१५ AM UTC

हा लेख एसटीआरएफएमटीमध्ये मॅक्रो फॉर्मेट स्ट्रिंग म्हणून मॅक्रो वापरताना डायनॅमिक्स एएक्स 2012 मधील काही विचित्र वर्तनाचे वर्णन करतो, तसेच त्याभोवती कसे कार्य करावे यावरील उदाहरणांचे वर्णन करतो.


हे पान जास्तीत जास्त लोकांना उपलब्ध व्हावे म्हणून इंग्रजीतून मशीन भाषांतरित करण्यात आले आहे. दुर्दैवाने, मशीन भाषांतर अद्याप परिपूर्ण तंत्रज्ञान नाही, त्यामुळे चुका होऊ शकतात. तुम्हाला हवे असल्यास, तुम्ही मूळ इंग्रजी आवृत्ती येथे पाहू शकता:

String Formatting with Macro and strFmt in Dynamics AX 2012

या पोस्टमधील माहिती डायनॅमिक्स एएक्स २०१२ आर ३ वर आधारित आहे. हे इतर आवृत्त्यांसाठी वैध असू शकते किंवा असू शकत नाही.

मला नुकतीच एसटीआरएफएमटी फंक्शनमध्ये एक समस्या आली ज्याने मला थोडा त्रास दिला. सर्वात धक्कादायक भाग म्हणजे काही विचित्र योगायोगाने मी एक्साप्टा / डायनॅमिक्स एएक्स डेव्हलपर म्हणून माझ्या बर्याच वर्षांत यापूर्वी कधीही याचा सामना केला नाही.

मुद्दा असा होता की मी एसटीआरएफएमटी फंक्शनसाठी फॉरमॅट स्ट्रिंग म्हणून मॅक्रो वापरण्याचा प्रयत्न केला आणि ते कार्य केले नाही. त्याने % मापदंडांकडे पूर्णपणे दुर्लक्ष केले आणि फक्त स्ट्रिंगचा उर्वरित भाग परत केला.

ते पाहिल्यानंतर मला असे आढळले की मॅक्रोजचा वापर स्ट्रिंग्स फॉरमॅट करण्यासाठी केला जाऊ शकतो, जे मला माहित नव्हते. अरे बरं, काहीतरी नवीन शिकणं नेहमीच चांगलं असतं, पण मला अजूनही खूप आश्चर्य वाटलं होतं की मला याआधी हे कळलं नव्हतं.

मुळात असं काहीसं

#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));
}
ब्लूस्की वर शेअर कराफेसबुक वर शेअर करालिंक्डइन वर शेअर कराटंबलर वर शेअर कराX वर शेअर करालिंक्डइन वर शेअर कराPinterest वर पिन करा

मिकेल बँग क्रिस्टेनसेन

लेखकाबद्दल

मिकेल बँग क्रिस्टेनसेन
मिकेल हे miklix.com चे निर्माता आणि मालक आहेत. त्यांना व्यावसायिक संगणक प्रोग्रामर/सॉफ्टवेअर डेव्हलपर म्हणून २० वर्षांहून अधिक अनुभव आहे आणि सध्या ते एका मोठ्या युरोपियन आयटी कॉर्पोरेशनमध्ये पूर्णवेळ नोकरी करतात. ब्लॉगिंग करत नसताना, ते आपला मोकळा वेळ विविध आवडी, छंद आणि क्रियाकलापांमध्ये घालवतात, जे काही प्रमाणात या वेबसाइटवर समाविष्ट असलेल्या विविध विषयांमध्ये प्रतिबिंबित होऊ शकतात.