Miklix

ডায়নামিক্স এএক্স 2012 এ ম্যাক্রো এবং স্ট্রএফএমটি সহ স্ট্রিং ফর্ম্যাটিং

প্রকাশিত: ১৬ ফেব্রুয়ারী, ২০২৫ এ ১২:৪৯:১৪ AM UTC
সর্বশেষ আপডেট: ১২ জানুয়ারী, ২০২৬ এ ৮:৪৪:৩৯ 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));
}

আরও পড়ুন

যদি আপনি এই পোস্টটি উপভোগ করেন, তাহলে আপনার এই পরামর্শগুলিও পছন্দ হতে পারে:


ব্লুস্কাইতে শেয়ার করুনফেসবুকে শেয়ার করুনলিংকডইনে শেয়ার করুনটাম্বলারে শেয়ার করুনX-এ শেয়ার করুনলিংকডইনে শেয়ার করুনপিন্টারেস্টে পিন করুন

মিকেল ক্রিস্টেনসেন

লেখক সম্পর্কে

মিকেল ক্রিস্টেনসেন
মিকেল হলেন miklix.com এর স্রষ্টা এবং মালিক। একজন পেশাদার কম্পিউটার প্রোগ্রামার/সফ্টওয়্যার ডেভেলপার হিসেবে তার ২০ বছরেরও বেশি অভিজ্ঞতা রয়েছে এবং বর্তমানে তিনি একটি বৃহৎ ইউরোপীয় আইটি কর্পোরেশনে পূর্ণকালীন কর্মরত। ব্লগিং না করার সময়, তিনি তার অবসর সময় বিভিন্ন আগ্রহ, শখ এবং কার্যকলাপে ব্যয় করেন, যা কিছুটা হলেও এই ওয়েবসাইটে কভার করা বিভিন্ন বিষয়ের মধ্যে প্রতিফলিত হতে পারে।