Miklix

Jinsi ya Kupima Juu ya Vipengele vya Enum kutoka kwa X++ Code katika Dynamics AX 2012

Iliyochapishwa: 15 Februari 2025, 23:11:12 UTC

Makala hii inaelezea jinsi ya kuhesabu na kitanzi juu ya vipengele vya enum ya msingi katika Dynamics AX 2012, ikiwa ni pamoja na mfano wa nambari ya X++.


Ukurasa huu ulitafsiriwa kwa mashine kutoka kwa Kiingereza ili kuifanya iweze kupatikana kwa watu wengi iwezekanavyo. Kwa bahati mbaya, utafsiri wa mashine bado sio teknolojia iliyokamilishwa, kwa hivyo makosa yanaweza kutokea. Ukipenda, unaweza kutazama toleo asili la Kiingereza hapa:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

Habari katika chapisho hili inategemea Dynamics AX 2012 R3. Inaweza au haiwezi kuwa halali kwa matoleo mengine.

Hivi karibuni nilikuwa nikiunda fomu ambayo ilihitaji kuonyesha thamani kwa kila kipengele katika enum. Badala ya kuunda mashamba kwa mikono (na kisha kuhitaji kudumisha fomu ikiwa enum imebadilishwa), niliamua kuitekeleza kwa nguvu ili iweze kuongeza moja kwa moja mashamba kwenye muundo wakati wa kukimbia.

Hata hivyo, hivi karibuni niligundua kuwa kwa kweli inatia juu ya maadili katika enum, wakati rahisi kutosha mara tu unapojua jinsi, inachanganya kidogo.

Kwa kweli unahitaji kuanza na darasa la DictEnum. Kama utakavyoona, darasa hili lina njia kadhaa za kupata habari kama vile jina na lebo kutoka kwa faharisi na thamani.

Tofauti kati ya index na thamani ni kwamba index ni namba ya kipengele katika enum, ikiwa vipengele vya enum vilihesabiwa kwa mtiririko kuanzia sifuri, wakati thamani ni mali halisi ya "thamani" ya kipengele. Kwa kuwa enums nyingi zina maadili yaliyohesabiwa kwa mtiririko kutoka 0, index na thamani ya kipengele mara nyingi itakuwa sawa, lakini hakika sio kila wakati.

Lakini unajuaje ni maadili gani ambayo enum ina? Hii ndio ambapo inakuwa ya kutatanisha. Darasa la DictEnum lina njia inayoitwa maadili(). Unaweza kutarajia njia hii kurudisha orodha ya maadili ya enum, lakini hiyo itakuwa rahisi sana, kwa hivyo badala yake inarudisha idadi ya maadili ambayo enum ina. Hata hivyo, idadi ya maadili haina uhusiano wowote na maadili halisi, kwa hivyo unahitaji kutumia nambari hii kama msingi wa kupiga simu kwa njia za msingi za index, sio zile zinazotegemea thamani.

Kama tu walikuwa wametaja njia hii indexes() badala yake, ingekuwa chini ya utata ;-)

Pia kumbuka kwamba maadili ya enum (na inaonekana "indexes") huanza saa 0, tofauti na safu na faharasa za kontena katika X++, ambazo huanza saa 1, kwa hivyo kwa kitanzi juu ya vitu kwenye enum unaweza kufanya kitu kama hiki:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

Hii itatoa ishara na lebo ya kila kipengele kwenye enum kwa infolog.

Shiriki kwenye BlueskyShiriki kwenye FacebookShiriki kwenye LinkedInShiriki kwenye TumblrShiriki kwenye XShiriki kwenye LinkedInBandika kwenye Pinterest

Mikkel Bang Christensen

Kuhusu Mwandishi

Mikkel Bang Christensen
Mikkel ndiye muundaji na mmiliki wa miklix.com. Ana uzoefu wa zaidi ya miaka 20 kama mtaalamu wa kupanga programu/programu za kompyuta na kwa sasa ameajiriwa muda wote kwa shirika kubwa la IT la Ulaya. Wakati si kublogi, yeye hutumia wakati wake wa ziada kwenye safu nyingi za mapendeleo, vitu vya kufurahisha, na shughuli, ambazo zinaweza kuonyeshwa kwa kadiri fulani katika mada anuwai zinazozungumziwa kwenye wavuti hii.