Miklix

Dynamics AX 2012 میں میکرو اور strFmt کے ساتھ سٹرنگ فارمیٹنگ

شائع شدہ: 16 فروری، 2025 کو 12:49:07 AM 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));
}
بلوسکی پر شیئر کریں۔فیس بک پر شیئر کریں۔لنکڈ ان پر شیئر کریں۔ٹمبلر پر شیئر کریں۔ایکس پر شیئر کریں۔لنکڈ ان پر شیئر کریں۔پنٹرسٹ پر پن کریں

میکل بینگ کرسٹینسن

مصنف کے بارے میں

میکل بینگ کرسٹینسن
مائیکل miklix.com کا خالق اور مالک ہے۔ اس کے پاس ایک پیشہ ور کمپیوٹر پروگرامر/سافٹ ویئر ڈویلپر کے طور پر 20 سال سے زیادہ کا تجربہ ہے اور وہ اس وقت ایک بڑی یورپی آئی ٹی کارپوریشن میں کل وقتی ملازمت کر رہے ہیں۔ جب وہ بلاگنگ نہیں کرتے ہیں، تو وہ اپنا فارغ وقت دلچسپیوں، مشاغل اور سرگرمیوں کی ایک وسیع صف پر صرف کرتا ہے، جو کسی حد تک اس ویب سائٹ پر موجود مختلف موضوعات سے ظاہر ہو سکتا ہے۔