Miklix

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

പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 16 12:51:22 AM UTC

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


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

String Formatting with Macro and strFmt in Dynamics AX 2012

Dynamics AX 2012 R3 അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഈ പോസ്റ്റിലെ വിവരങ്ങൾ. ഇത് മറ്റ് പതിപ്പുകൾക്ക് സാധുതയുള്ളതോ അല്ലാത്തതോ ആകാം.

അടുത്തിടെ strFmt ഫംഗ്ഷനുമായി ബന്ധപ്പെട്ട ഒരു പ്രശ്നം ഞാൻ അഭിമുഖീകരിച്ചു, അത് എന്നെ അൽപ്പം ആശയക്കുഴപ്പത്തിലാക്കി. ഏറ്റവും അമ്പരപ്പിക്കുന്ന ഭാഗം, ഒരു ആക്സാപ്ത / ഡൈനാമിക്സ് എഎക്സ് ഡെവലപ്പർ എന്ന നിലയിലുള്ള എന്റെ നിരവധി വർഷങ്ങളിൽ വിചിത്രമായ യാദൃശ്ചികതയിലൂടെ ഞാൻ മുമ്പൊരിക്കലും ഇത് അഭിമുഖീകരിച്ചിട്ടില്ല എന്നതാണ്.

strFmt ഫംഗ്ഷനുള്ള ഫോർമാറ്റ് സ്ട്രിംഗായി ഒരു മാക്രോ ഉപയോഗിക്കാൻ ഞാൻ ശ്രമിച്ചു, അത് പ്രവർത്തിച്ചില്ല എന്നതാണ് പ്രശ്നം. ഇത് % പാരാമീറ്ററുകൾ പൂർണ്ണമായും അവഗണിക്കുകയും സ്ട്രിംഗിന്റെ ശേഷിക്കുന്ന ഭാഗം മാത്രം തിരികെ നൽകുകയും ചെയ്തു.

ഇത് പരിശോധിച്ച ശേഷം, സ്ട്രിംഗുകൾ ഫോർമാറ്റ് ചെയ്യാൻ മാക്രോകൾ തന്നെ ഉപയോഗിക്കാമെന്ന് ഞാൻ കണ്ടെത്തി, അതും എനിക്ക് അറിയാത്ത ഒന്നായിരുന്നു. ഓ, പുതിയ എന്തെങ്കിലും പഠിക്കുന്നത് എല്ലായ്പ്പോഴും നല്ലതാണ്, പക്ഷേ ഞാൻ ഇത് മുമ്പ് കണ്ടിട്ടില്ല എന്നതിൽ ഞാൻ ഇപ്പോഴും വളരെ ആശ്ചര്യപ്പെട്ടു.

അടിസ്ഥാനപരമായി, ഇതുപോലൊന്ന്

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

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

മാക്രോയിലെ % ചിഹ്നങ്ങൾ യഥാർത്ഥത്തിൽ മാക്രോയുടെ സ്വന്തം സ്ട്രിംഗ് ഫോർമാറ്റിംഗ് സവിശേഷതകൾക്കായി ഉപയോഗിക്കുന്നതിനാൽ ഇത് പ്രവർത്തിക്കില്ല. ഈ സാഹചര്യത്തിൽ, strFmt ഫംഗ്ഷൻ ഫോർമാറ്റിംഗ് സ്ട്രിംഗ് "-" ആയി കാണും, അതിനാൽ അത് മാത്രമേ തിരികെ നൽകൂ.

ഇതുപോലൊന്ന്:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(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 വർഷത്തിലേറെ പരിചയമുള്ള അദ്ദേഹം ഇപ്പോൾ ഒരു വലിയ യൂറോപ്യൻ ഐടി കോർപ്പറേഷനിൽ മുഴുവൻ സമയ ജോലിക്കാരനാണ്. ബ്ലോഗിംഗ് അല്ലാത്തപ്പോൾ, അദ്ദേഹം തന്റെ ഒഴിവു സമയം വിവിധ താൽപ്പര്യങ്ങൾ, ഹോബികൾ, പ്രവർത്തനങ്ങൾ എന്നിവയിൽ ചെലവഴിക്കുന്നു, ഇത് ഒരു പരിധിവരെ ഈ വെബ്‌സൈറ്റിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന വിഷയങ്ങളിൽ പ്രതിഫലിച്ചേക്കാം.