Miklix

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

প্রকাশিত: ১৬ ফেব্রুয়ারী, ২০২৫ এ ১২:৪৯:১৪ AM UTC

এই নিবন্ধটি ডায়নামিক্স এএক্স 2012 এর কিছু অদ্ভুত আচরণ বর্ণনা করে যখন স্ট্রএফএমটিতে ফর্ম্যাট স্ট্রিং হিসাবে ম্যাক্রো ব্যবহার করে, পাশাপাশি এটির চারপাশে কীভাবে কাজ করা যায় তার উদাহরণ।


এই পৃষ্ঠাটি যতটা সম্ভব মানুষের কাছে পৌঁছানোর জন্য ইংরেজি থেকে মেশিন অনুবাদ করা হয়েছে। দুর্ভাগ্যবশত, মেশিন অনুবাদ এখনও একটি নিখুঁত প্রযুক্তি নয়, তাই ত্রুটি হতে পারে। আপনি যদি চান, আপনি এখানে মূল ইংরেজি সংস্করণটি দেখতে পারেন:

String Formatting with Macro and strFmt in Dynamics AX 2012

এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে বা নাও হতে পারে।

আমি সম্প্রতি স্ট্রএফএমটি ফাংশন নিয়ে একটি সমস্যার মুখোমুখি হয়েছি যা আমাকে কিছুটা বিস্মিত করেছিল। সবচেয়ে বিস্ময়কর অংশটি হ'ল কিছু অদ্ভুত কাকতালীয় কারণে আমি অ্যাক্সাপ্টা / ডায়নামিক্স এএক্স বিকাশকারী হিসাবে আমার বহু বছরে এর আগে কখনও এটির মুখোমুখি হইনি।

সমস্যাটি হ'ল আমি স্ট্রএফএমটি ফাংশনের জন্য ফর্ম্যাট স্ট্রিং হিসাবে একটি ম্যাক্রো ব্যবহার করার চেষ্টা করেছি এবং এটি ঠিক কাজ করে নি। এটি সম্পূর্ণরূপে % প্যারামিটারগুলি উপেক্ষা করেছে এবং কেবল স্ট্রিংয়ের বাকী অংশটি ফিরিয়ে দিয়েছে।

এটি দেখার পরে, আমি আবিষ্কার করেছি যে ম্যাক্রোগুলি নিজেরাই স্ট্রিং ফর্ম্যাট করতে ব্যবহার করা যেতে পারে, যা আমি জানতাম না। ওহ ভাল, নতুন কিছু শিখতে সর্বদা ভাল, তবে আমি এখনও খুব অবাক হয়েছি যে আমি এর আগে এটি সম্মুখীন হইনি।

মূলত, এই মত কিছু

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

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

কাজ করবে না কারণ ম্যাক্রোতে % চিহ্নগুলি আসলে ম্যাক্রোর নিজস্ব স্ট্রিং ফর্ম্যাটিং বৈশিষ্ট্যগুলির জন্য ব্যবহৃত হয়। এই ক্ষেত্রে, স্ট্রএফএমটি ফাংশনটি ফর্ম্যাটিং স্ট্রিংটিকে "--" হিসাবে দেখতে পাবে এবং তাই কেবল এটিই ফিরিয়ে দেবে।

এরকম কিছু:

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

কাজ করবে, তবে সম্ভবত আপনি যেভাবে চান সেভাবে নয়। তিনটি ভেরিয়েবলের মানগুলি আউটপুট করার পরিবর্তে, এটি পরিবর্তে ভেরিয়েবলের নামগুলি আউটপুট করবে, এই ক্ষেত্রে "সেলসআইডি-আইটেমআইডি-লাইননাম"। (লক্ষ্য করুন যে আমি ম্যাক্রোতে প্যারামিটারগুলি পাস করার সময় কমার পরে স্পেস রাখিনি, যেমনটি আমি সাধারণত পদ্ধতি কলগুলিতে করি। কারণ ম্যাক্রো আসলে এই জাতীয় স্পেসগুলিও ব্যবহার করবে, তাই আউটপুটটি "সেলসআইডি- আইটেমআইডি-লাইননাম" হবে যদি আমি করি)।

আসলে স্ট্রএফএমটি সহ ফর্ম্যাটিং স্ট্রিং হিসাবে একটি ম্যাক্রো ব্যবহার করতে, আপনাকে ব্যাকস্ল্যাশগুলির সাথে শতাংশের লক্ষণগুলি এড়াতে হবে, যেমন:

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