Miklix

Dynamics AX 2012-ൽ മാക്രോ, strFmt എന്നിവ ഉപയോഗിച്ച് String Formatting

പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 16 12:51:22 AM UTC
അവസാനം അപ്ഡേറ്റ് ചെയ്തത്: 2026, ജനുവരി 12 8:44:46 AM UTC

strFmt-യിൽ ഫോർമാറ്റ് സ്ട്രിംഗായി മാക്രോ ഉപയോഗിക്കുമ്പോൾ ഡൈനാമിക്സ് AX 2012-ലെ ചില പ്രത്യേക പെരുമാറ്റരീതികളും അത് എങ്ങനെ പരിഹരിക്കാമെന്നതിനുള്ള ഉദാഹരണങ്ങളും ഈ ലേഖനം വിവരിക്കുന്നു.


ഈ പേജ് കഴിയുന്നത്ര ആളുകൾക്ക് ആക്‌സസ് ചെയ്യുന്നതിനായി ഇംഗ്ലീഷിൽ നിന്ന് മെഷീൻ വിവർത്തനം ചെയ്‌തിരിക്കുന്നു. നിർഭാഗ്യവശാൽ, മെഷീൻ വിവർത്തനം ഇതുവരെ പൂർണ്ണത നേടിയിട്ടില്ലാത്ത ഒരു സാങ്കേതികവിദ്യയാണ്, അതിനാൽ പിശകുകൾ സംഭവിക്കാം. നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ഇവിടെ യഥാർത്ഥ ഇംഗ്ലീഷ് പതിപ്പ് കാണാൻ കഴിയും:

String Formatting with Macro and strFmt in Dynamics AX 2012

ഈ പോസ്റ്റിലെ വിവരങ്ങൾ ഡൈനാമിക്സ് AX 2012 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));
}

കൂടുതൽ വായനയ്ക്ക്

നിങ്ങൾക്ക് ഈ പോസ്റ്റ് ഇഷ്ടപ്പെട്ടെങ്കിൽ, ഈ നിർദ്ദേശങ്ങളും നിങ്ങൾക്ക് ഇഷ്ടപ്പെട്ടേക്കാം:


ബ്ലൂസ്കൈയിൽ പങ്കിടുകഫേസ്ബുക്കിൽ പങ്കിടുകLinkedIn-ൽ പങ്കിടുകTumblr-ൽ പങ്കിടുകX-ൽ പങ്കിടുകLinkedIn-ൽ പങ്കിടുകPinterest-ൽ പിൻ ചെയ്യുക

മിക്കൽ ക്രിസ്റ്റൻസൺ

എഴുത്തുകാരനെ കുറിച്ച്

മിക്കൽ ക്രിസ്റ്റൻസൺ
മിക്കൽ miklix.com ന്റെ സ്രഷ്ടാവും ഉടമയുമാണ്. ഒരു പ്രൊഫഷണൽ കമ്പ്യൂട്ടർ പ്രോഗ്രാമർ/സോഫ്റ്റ്‌വെയർ ഡെവലപ്പർ എന്ന നിലയിൽ 20 വർഷത്തിലേറെ പരിചയമുള്ള അദ്ദേഹം ഇപ്പോൾ ഒരു വലിയ യൂറോപ്യൻ ഐടി കോർപ്പറേഷനിൽ മുഴുവൻ സമയ ജോലിക്കാരനാണ്. ബ്ലോഗിംഗ് അല്ലാത്തപ്പോൾ, അദ്ദേഹം തന്റെ ഒഴിവു സമയം വിവിധ താൽപ്പര്യങ്ങൾ, ഹോബികൾ, പ്രവർത്തനങ്ങൾ എന്നിവയിൽ ചെലവഴിക്കുന്നു, ഇത് ഒരു പരിധിവരെ ഈ വെബ്‌സൈറ്റിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന വിഷയങ്ങളിൽ പ്രതിഫലിച്ചേക്കാം.