Miklix

Dynamics AX 2012에서 매크로 및 strFmt를 사용한 문자열 포맷팅

게시됨: 2025년 2월 16일 오전 12시 48분 40초 UTC

이 문서에서는 strFmt에서 매크로를 형식 문자열로 사용할 때 Dynamics AX 2012에서 발생하는 몇 가지 특이한 동작과 이를 해결하는 방법에 대한 예를 설명합니다.


이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

String Formatting with Macro and strFmt in Dynamics AX 2012

이 게시물의 정보는 Dynamics 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년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.