Miklix

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

प्रकाशित: १६ फेब्रुवारी, २०२५ रोजी १२:४९:१५ AM UTC
शेवटचे अपडेट केलेले: १२ जानेवारी, २०२६ रोजी ८:४४:४० AM UTC

हा लेख strFmt मध्ये फॉरमॅट स्ट्रिंग म्हणून मॅक्रो वापरताना डायनॅमिक्स AX २०१२ मधील काही विचित्र वर्तनाचे वर्णन करतो, तसेच त्यावर कसे कार्य करावे याची उदाहरणे देतो.


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

String Formatting with Macro and strFmt in Dynamics AX 2012

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

मला अलिकडेच strFmt फंक्शनमध्ये एक समस्या आली ज्यामुळे मी थोडा गोंधळलो. सर्वात गोंधळात टाकणारी गोष्ट म्हणजे, Axapta/Dynamics AX डेव्हलपर म्हणून माझ्या अनेक वर्षांच्या कामात मला काही विचित्र योगायोगाने कधीही असा प्रश्न पडला नव्हता.

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

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

मुळात, असे काहीतरी

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

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

मॅक्रोमधील % चिन्हे प्रत्यक्षात मॅक्रोच्या स्वतःच्या स्ट्रिंग फॉरमॅटिंग वैशिष्ट्यांसाठी वापरली जातात म्हणून काम करणार नाही. या प्रकरणात, strFmt फंक्शन फॉरमॅटिंग स्ट्रिंग "--" म्हणून पाहेल आणि म्हणूनच फक्त तेच परत करेल.

असे काहीतरी:

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

हे काम करेल, पण कदाचित तुम्हाला हव्या त्या पद्धतीने नाही. तीन व्हेरिएबल्सची व्हॅल्यूज आउटपुट करण्याऐवजी, ते व्हेरिएबल्सची नावे आउटपुट करेल, या प्रकरणात "salesId-itemId-lineNum". (लक्षात घ्या की मी मॅक्रोला पॅरामीटर्स पास करताना स्वल्पविरामानंतर स्पेसेस ठेवल्या नाहीत, जसे मी सहसा मेथड कॉलमध्ये करतो. कारण मॅक्रो प्रत्यक्षात अशा स्पेसेस वापरेल, म्हणून जर मी असे केले तर आउटपुट "salesId- itemId- lineNum" असेल).

strFmt सह फॉरमॅटिंग स्ट्रिंग म्हणून मॅक्रो प्रत्यक्षात वापरण्यासाठी, तुम्हाला बॅकस्लॅशसह टक्केवारी चिन्हे एस्केप करणे आवश्यक आहे, जसे की:

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