डायनामिक्स एएक्स 2012 मा एक्स ++ कोडबाट गणनको तत्वहरूमा कसरी पुनरावृत्ति गर्ने
प्रकाशित: २०२५ फेब्रुअरी १५: २३:१६:०७ UTC
यस लेखले डायनामिक्स एएक्स २०१२ मा आधार गणनको तत्वहरू कसरी गणना गर्ने र लुप गर्ने भनेर व्याख्या गर्दछ, जसमा एक्स ++ कोड उदाहरण समावेश छ।
How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012
यस पोस्टमा जानकारी डायनामिक्स एएक्स 2012 आर 3 मा आधारित छ। यो अन्य संस्करणका लागि मान्य हुन सक्छ वा नहुन पनि सक्छ ।
म भर्खरै एक फारम सिर्जना गर्दै थिएँ जुन गणनामा प्रत्येक तत्वको लागि मान प्रदर्शन गर्न आवश्यक थियो। म्यानुअल रूपमा फिल्डहरू सिर्जना गर्नुको सट्टा (र त्यसपछि एनम कहिल्यै परिमार्जन गरिएको छ भने फारम कायम राख्न आवश्यक छ), मैले यसलाई गतिशील रूपमा कार्यान्वयन गर्ने निर्णय गरें ताकि यसले स्वचालित रूपमा रन टाइममा डिजाइनमा फिल्डहरू थप्नेछ।
तथापि, मैले चाँडै पत्ता लगाएँ कि वास्तवमा एक गणनामा मानहरू माथि पुनरावृत्ति, जबकि एक पटक तपाईं कसरी जान्नुहुन्छ, अलि भ्रामक छ।
तपाईं स्पष्ट रूपमा डिक्टेनम वर्गबाट सुरु गर्न आवश्यक छ। तपाईंले देख्नुहुनेछ, यस वर्गमा अनुक्रमणिका र मान दुवैबाट नाम र लेबल जस्ता जानकारी प्राप्त गर्नका लागि धेरै विधिहरू छन्।
अनुक्रमणिका र मानबीचको भिन्नता यो हो कि अनुक्रमणिका गणनमा तत्वको संख्या हो, यदि गणको तत्वहरू क्रमिक रूपमा शून्यबाट सुरु हुन्छ भने, जबकि मान तत्वको वास्तविक "मान" गुण हो। प्रायजसो गणनहरूमा ० बाट क्रमिक रूपमा गणना गरिएका मानहरू हुने भएकोले, तत्वको अनुक्रमणिका र मान प्रायः समान हुन्छ, तर निश्चित रूपमा सधैं होइन।
तर तपाईं कसरी थाहा पाउन सक्नुहुन्छ कि एक गणको कुन मूल्यहरू छन्? यो जहाँ यो भ्रामक हुन्छ। डिक्टेनम वर्गमा मान () नामक विधि छ। तपाईं यो विधिले गणको मानहरूको सूची फिर्ता गर्ने अपेक्षा गर्न सक्नुहुन्छ, तर यो स्पष्ट रूपमा धेरै सजिलो हुनेछ, त्यसैले यसको सट्टा यसले गणनामा समावेश मानहरूको संख्या फर्काउँछ। यद्यपि, मानहरूको संख्याको वास्तविक मानहरूसँग कुनै सम्बन्ध छैन, त्यसैले तपाईंले यो नम्बरलाई अनुक्रमणिका-आधारित विधिहरू कल गर्ने आधारको रूपमा प्रयोग गर्न आवश्यक छ, न कि मान-आधारित।
यदि तिनीहरूले यस विधिलाई अनुक्रमणिकाहरू () को सट्टामा नामकरण गरेको भए, यो कम भ्रामक हुने थियो ;-)
यो पनि मनमा राख्नुहोस् कि गणमान मानहरू (र स्पष्ट रूपमा यी "अनुक्रमणिकाहरू") एक्स ++ मा सरणी र कन्टेनर अनुक्रमणिकाहरूको विपरीत 0 मा सुरु हुन्छ, जुन 1 मा सुरु हुन्छ, त्यसैले एनममा तत्वहरू लुप गर्न तपाईं यस्तो केहि गर्न सक्नुहुनेछ:
Counter c;
;
for (c = 0; c < dictEnum.values(); c++)
{
info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}
यसले इन्फोलगमा गणमा प्रत्येक तत्वको प्रतीक र लेबल आउटपुट गर्नेछ।