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
Mara ya mwisho kusasishwa: 12 Januari 2026, 08:42:12 UTC

Makala haya yanaelezea jinsi ya kuorodhesha na kuzungusha vipengele vya enum ya msingi katika Dynamics AX 2012, ikiwa ni pamoja na mfano wa msimbo wa 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

Taarifa katika chapisho hili inategemea Dynamics AX 2012 R3. Huenda ikawa halali au isiwe halali kwa matoleo mengine.

Hivi majuzi nilikuwa nikiunda fomu ambayo ilihitaji kuonyesha thamani ya kila kipengele katika enum. Badala ya kuunda sehemu kwa mikono (na kisha kuhitaji kudumisha fomu ikiwa enum itabadilishwa), niliamua kuitekeleza kwa njia inayobadilika ili iweze kuongeza sehemu kwenye muundo kiotomatiki wakati wa utekelezaji.

Hata hivyo, niligundua haraka kwamba kuzidisha thamani katika enum, ingawa ni rahisi vya kutosha mara tu unapojua jinsi, ni jambo la kutatanisha kidogo.

Bila shaka unahitaji kuanza na darasa la DictEnum. Kama utakavyoona, darasa hili lina mbinu kadhaa za kupata taarifa kama vile jina na lebo kutoka kwa faharasa na thamani.

Tofauti kati ya faharasa na thamani ni kwamba faharasa ni nambari ya kipengele katika enum, ikiwa vipengele vya enum vilihesabiwa mfululizo kuanzia sifuri, huku thamani ikiwa sifa halisi ya "thamani" ya kipengele. Kwa kuwa enum nyingi zina thamani zilizohesabiwa mfululizo kuanzia 0, faharasa na thamani ya kipengele mara nyingi zitakuwa sawa, lakini hakika si mara zote.

Lakini unajuaje ni thamani gani enum inazo? Hapa ndipo inapochanganyikiwa. Darasa la DictEnum lina mbinu inayoitwa values(). Unaweza kutarajia njia hii kurudisha orodha ya thamani za enum, lakini hiyo ni wazi itakuwa rahisi sana, kwa hivyo badala yake inarudisha idadi ya thamani ambazo enum inazo. Hata hivyo, idadi ya thamani haina uhusiano wowote na thamani halisi, kwa hivyo unahitaji kutumia nambari hii kama msingi wa kuita mbinu zinazotegemea faharasa, sio zile zinazotegemea thamani.

Kama wangeipa njia hii jina la indexes() badala yake, isingekuwa na utata mwingi ;-)

Pia kumbuka kwamba thamani za enum (na inaonekana "faharasa" hizi) huanza saa 0, tofauti na faharasa za safu na kontena katika X++, ambazo huanza saa 1, kwa hivyo ili kuzunguka vipengele 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 kwenye infolog.

Kusoma Zaidi

Ikiwa ulifurahia chapisho hili, unaweza pia kupenda mapendekezo haya:


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

Mikkel Christensen

Kuhusu Mwandishi

Mikkel 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.