Miklix

Formatimi i fijeve me Macro dhe strFmt në Dynamics AX 2012

Publikuar: 16 shkurt 2025 në 12:49:44 e paradites, UTC
Përditësimi i fundit: 12 janar 2026 në 8:44:43 e paradites, UTC

Ky artikull përshkruan disa sjellje të veçanta në Dynamics AX 2012 kur përdoret një makro si varg formati në strFmt, si dhe shembuj se si të punohet rreth tij.


Kjo faqe u përkthye me makinë nga anglishtja për ta bërë të aksesueshme për sa më shumë njerëz. Fatkeqësisht, përkthimi me makinë nuk është ende një teknologji e përsosur, kështu që mund të ndodhin gabime. Nëse preferoni, mund ta shikoni versionin origjinal në anglisht këtu:

String Formatting with Macro and strFmt in Dynamics AX 2012

Informacioni në këtë postim bazohet në Dynamics AX 2012 R3. Mund të jetë ose jo i vlefshëm për versione të tjera.

Kohët e fundit hasa një problem me funksionin strFmt që më hutoi pak. Pjesa më e habitshme ishte se, për ndonjë rastësi të çuditshme, nuk e kisha hasur kurrë më parë në shumë vitet e mia si zhvillues i Axapta/Dynamics AX.

Problemi ishte se u përpoqa të përdorja një makro si varg formati për funksionin strFmt dhe thjesht nuk funksionoi. I injoroi plotësisht parametrat % dhe ktheu vetëm pjesën e mbetur të vargut.

Pasi e shqyrtova, zbulova se vetë makrot mund të përdoren për të formatuar vargje, gjë që gjithashtu nuk e dija. Sidoqoftë, është gjithmonë mirë të mësosh diçka të re, por prapëseprapë u habita shumë që nuk e kisha hasur rastësisht këtë më parë.

Në thelb, diçka si kjo

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

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

Nuk do të funksionojë sepse shenjat % në makro përdoren në të vërtetë për veçoritë e formatimit të vargut të makrosë. Në këtë rast, funksioni strFmt do ta shohë vargun e formatimit si "--" dhe për këtë arsye do ta kthejë vetëm atë.

Diçka si kjo:

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

Do të funksionojë, por ndoshta jo ashtu siç dëshironi. Në vend që të japë vlerat e tre variablave, do të japë emrat e variablave, në këtë rast "salesId-itemId-lineNum". (Vini re se nuk vendosa hapësira pas presjeve kur kalova parametrat në makro, siç bëj zakonisht në thirrjet e metodave. Kjo sepse makroja në fakt do të përdorë edhe hapësira të tilla, kështu që rezultati do të ishte "salesId-itemId-lineNum" nëse do ta bëja).

Për të përdorur një makro si varg formatimi me strFmt, duhet t'i shmangni shenjat e përqindjes me anë të vijave të prapme, si kjo:

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

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

Kjo në të vërtetë do të funksionojë sikur ta kishit dhënë drejtpërdrejt vargun e formatit.

Kjo punë e vogël ilustron shembujt:

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));
}

Lexime të mëtejshme

Nëse ju pëlqeu ky postim, mund t'ju pëlqejnë edhe këto sugjerime:


Shpërndaje në BlueskyShpërndaje në FacebookNdani në LinkedInShpërndaje në TumblrShpërndaje në XNdani në LinkedInPin në Pinterest

Mikkel Christensen

Rreth Autorit

Mikkel Christensen
Mikkel është krijuesi dhe pronari i miklix.com. Ai ka mbi 20 vjet përvojë si programues profesional kompjuteri/zhvillues softuerësh dhe aktualisht është i punësuar me kohë të plotë për një korporatë të madhe evropiane IT. Kur nuk bën blog, ai e kalon kohën e lirë në një gamë të gjerë interesash, hobish dhe aktivitetesh, të cilat mund të reflektohen në një farë mase në shumëllojshmërinë e temave të mbuluara në këtë faqe interneti.