Miklix

Virknes formatēšana, izmantojot makro un strFmt programmā Dynamics AX 2012

Publicēts: 2025. gada 16. februāris 00:48:43 UTC

Šajā rakstā ir aprakstītas dažas īpatnējas Dynamics AX 2012 darbības, izmantojot makro kā formāta virkni strFmt, kā arī sniegti piemēri, kā to apiet.


Šī lapa tika mašīntulkota no angļu valodas, lai padarītu to pieejamu pēc iespējas vairāk cilvēkiem. Diemžēl mašīntulkošana vēl nav pilnīga tehnoloģija, tāpēc tajā var rasties kļūdas. Ja vēlaties, oriģinālo versiju angļu valodā varat apskatīt šeit:

String Formatting with Macro and strFmt in Dynamics AX 2012

Šajā ziņā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tas var būt un var nebūt derīgs citām versijām.

Es nesen saskāros ar problēmu ar funkciju strFmt, kas mani mazliet mulsināja. Pats mulsinošākais bija tas, ka dīvainas sakritības dēļ es ar to nekad iepriekš nebiju saskāries savos daudzos Axapta/Dynamics AX izstrādātāja gados.

Problēma bija tāda, ka es mēģināju izmantot makro kā formāta virkni funkcijai strFmt, un tas vienkārši nedarbojās. Tas pilnībā ignorēja % parametrus un atgrieza tikai atlikušo virknes daļu.

Izpētījis to, es atklāju, ka pašus makro var izmantot virkņu formatēšanai, ko es arī nezināju. Ak, labi, vienmēr ir labi iemācīties kaut ko jaunu, bet es tik un tā biju ļoti pārsteigts, ka man ar to iepriekš nebiju gadījies sastapties.

Būtībā kaut kas līdzīgs šim

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

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

nedarbosies, jo % zīmes makro faktiski tiek izmantotas paša makro virknes formatēšanas līdzekļiem. Šajā gadījumā funkcija strFmt redzēs formatēšanas virkni kā "--" un tāpēc atgriezīs tikai to.

Kaut kas līdzīgs šim:

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

darbosies, bet, iespējams, ne tā, kā vēlaties. Tā vietā, lai izvadītu trīs mainīgo vērtības , tas izvadīs mainīgo nosaukumus , šajā gadījumā "salesId-itemId-lineNum". (Ņemiet vērā, ka, nododot parametrus makro, es neliku atstarpes aiz komatiem, kā to parasti daru metožu izsaukumos. Tas ir tāpēc, ka makro faktiski izmantos arī šādas atstarpes, tāpēc izvade būtu "salesId-itemId-lineNum", ja es to darītu).

Lai faktiski izmantotu makro kā formatēšanas virkni ar strFmt, jums ir jāizvairās no procentu zīmēm ar atpakaļvērstās slīpsvītras, piemēram:

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

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

Tas faktiski darbosies tā, it kā jūs būtu tieši norādījis formāta virkni.

Šis mazais darbs ilustrē piemērus:

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));
}
Kopīgojiet pakalpojumā BlueskyKopīgot FacebookKopīgojiet vietnē LinkedInKopīgojiet vietnē TumblrKopīgot vietnē XKopīgojiet vietnē LinkedInPiespraust vietnē Pinterest

Mikkel Bang Christensen

Par autoru

Mikkel Bang Christensen
Mikels ir miklix.com radītājs un īpašnieks. Viņam ir vairāk nekā 20 gadu pieredze kā profesionālam programmētājam/programmatūras izstrādātājam, un pašlaik viņš strādā pilna laika darbu lielā Eiropas IT korporācijā. Kad viņš neraksta blogus, viņš pavada brīvo laiku, pievēršoties dažādām interesēm, hobijiem un aktivitātēm, kas zināmā mērā var atspoguļoties šajā tīmekļa vietnē aplūkoto tēmu daudzveidībā.