ডায়নামিক্স এএক্স 2012 এ এক্স ++ কোড থেকে একটি এনামের উপাদানগুলির উপর কীভাবে পুনরাবৃত্তি করবেন
প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১১:১১:১৫ PM UTC
এই নিবন্ধটি একটি এক্স ++ কোড উদাহরণ সহ ডায়নামিক্স এএক্স 2012 এ একটি বেস এনামের উপাদানগুলি কীভাবে গণনা এবং লুপ করতে হয় তা ব্যাখ্যা করে।
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
এই পোস্টের তথ্য Dynamics AX 2012 R3 এর উপর ভিত্তি করে। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে বা নাও হতে পারে।
আমি সম্প্রতি একটি ফর্ম তৈরি করছিলাম যা একটি এনামের প্রতিটি উপাদানের জন্য একটি মান প্রদর্শন করা দরকার। ম্যানুয়ালি ক্ষেত্রগুলি তৈরি করার পরিবর্তে (এবং তারপরে এনামটি কখনও সংশোধন করা হলে ফর্মটি বজায় রাখার প্রয়োজন), আমি এটি গতিশীলভাবে প্রয়োগ করার সিদ্ধান্ত নিয়েছি যাতে এটি স্বয়ংক্রিয়ভাবে রান টাইমে নকশায় ক্ষেত্রগুলি যুক্ত করে।
যাইহোক, আমি শীঘ্রই আবিষ্কার করেছি যে প্রকৃতপক্ষে একটি এনামের মানগুলির উপর পুনরাবৃত্তি করা, যখন আপনি কীভাবে জানেন তা যথেষ্ট সহজ, কিছুটা বিভ্রান্তিকর।
আপনাকে অবশ্যই ডিকটেনাম ক্লাস দিয়ে শুরু করতে হবে। আপনি দেখতে পাবেন, এই শ্রেণীতে সূচক এবং মান উভয় থেকে নাম এবং লেবেল হিসাবে তথ্য প্রাপ্তির জন্য বিভিন্ন পদ্ধতি রয়েছে।
সূচক এবং মানের মধ্যে পার্থক্য হ'ল সূচকটি এনামের একটি উপাদানের সংখ্যা, যদি এনামের উপাদানগুলি শূন্য থেকে শুরু করে ক্রমানুসারে সংখ্যাযুক্ত হয়, যখন মানটি উপাদানটির প্রকৃত "মান" সম্পত্তি। যেহেতু বেশিরভাগ এনামের মান 0 থেকে ক্রমানুসারে সংখ্যাযুক্ত হয়, তাই কোনও উপাদানের সূচক এবং মান প্রায়শই একই হবে, তবে অবশ্যই সর্বদা নয়।
তবে আপনি কীভাবে জানবেন যে এনামের কোন মান রয়েছে? এখানেই বিষয়টি বিভ্রান্তিকর হয়ে ওঠে। ডিকটেনাম ক্লাসে মান () নামে একটি পদ্ধতি রয়েছে। আপনি আশা করতে পারেন যে এই পদ্ধতিটি এনামের মানগুলির একটি তালিকা ফিরিয়ে দেবে, তবে এটি স্পষ্টতই খুব সহজ হবে, তাই পরিবর্তে এটি এনামের মধ্যে থাকা মানগুলির সংখ্যা ফিরিয়ে দেয়। যাইহোক, মানগুলির সংখ্যার প্রকৃত মানগুলির সাথে কিছুই করার নেই, তাই আপনাকে এই সংখ্যাটি সূচক-ভিত্তিক পদ্ধতিগুলি কল করার ভিত্তি হিসাবে ব্যবহার করতে হবে, মান-ভিত্তিক নয়।
যদি তারা এই পদ্ধতিটির পরিবর্তে সূচী () নামকরণ করত তবে এটি কম বিভ্রান্তিকর হত ;-)
এছাড়াও মনে রাখবেন যে এনাম মানগুলি (এবং দৃশ্যত এই "সূচকগুলি") 0 থেকে শুরু হয়, এক্স ++ এ অ্যারে এবং ধারক সূচকগুলির বিপরীতে, যা 1 থেকে শুরু হয়, সুতরাং এনামের উপাদানগুলির উপর লুপ করতে আপনি এর মতো কিছু করতে পারেন:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
এটি ইনফোলগে এনামের প্রতিটি উপাদানের প্রতীক এবং লেবেল আউটপুট দেবে।