Miklix

Dynamics AX 2012-də Bütün Decimals ilə Bir Realı String-ə Çevir

Nəşr olundu: 16 fevral 2025 at 10:47:36 UTC

Bu məqalədə X++ kod nümunəsi daxil olmaqla Dynamics AX 2012-də bütün ondalıqları qoruyarkən üzən nöqtə nömrəsini bir stringə necə çevirmək lazım olduğunu izah edirəm.


Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

Convert a Real to String with All Decimals in Dynamics AX 2012

Bu postdakı məlumatlar Dynamics AX 2012 R3 əsasında hazırlanıb. Digər versiyalar üçün də keçərli ola bilər və ya olmaya bilər.

Hər dəfə bir dəfə real ədədi ipə çevirmək lazımdır. Adətən, sadəcə strFmt() -ə ötürmək kifayətdir, amma bu funksiya həmişə iki onluqla yuvarlanır. Bu heç də həmişə istədiyim kimi olmur.

Bundan sonra num2str() funksiyası da var. Bu funksiya yaxşı işləyir, amma nə qədər ondalıq və xarakter istədiyinizi əvvəlcədən bilməyinizi tələb edir.

Bəs əgər siz sadəcə rəqəmin bir stringə çevrilməsini istəyirsinizsə, bütün rəqəmlər və ondalıqlar varsa, onda necə? Müəyyən səbəblərdən, bu, həmişə mənə Googling olan bir şeydir, çünki bu, təəccüblü şəkildə gizli edir və mən bunu o qədər nadir hallarda edirəm ki, adətən necə - əksər proqramlaşdırma dillərində, mən gözləyərdim ki, siz sadəcə realı boş bir ipə bir-biri ilə bir-biri ilə bir-birinizə qoşa bilərsiniz, amma X++ bunu dəstəkləmir.

Hər nə olursa olsun, bunu etmək üçün tapdığım ən asan yol .NET zəngindən istifadə etməkdir. Burada da bir neçə variant var, inkişaf etmiş formatlama üçün seçimlərlə və olmadan. Amma əgər siz sadəcə realın həqiqətən sadə bir şəkildə stringə çevrilməsini istəyirsinizsə, bu kifayət edəcək:

stringValue = System.Convert::ToString(realValue);

Əgər bu kod AOS-da (məsələn, toplu işdə) işləniləcəksə, əvvəlcə lazımi koda giriş icazəsini iddia etməyi unutmayın. Bu halda . NET kodu çağırmaq üçün ClrInterop tipinin InteropPermission-a ehtiyacınız olacaq. Beləliklə, tam kod nümunəsi belə bir şey görünərdi:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

Yadda saxlayın ki, bu sadə System::Convert funksiyası ondalıq nöqtə xarakterinə görə sistemin hazırkı lokaliyindən istifadə edir. Bu sizin üçün məsələ olmaya bilər, amma mənim üçün, məsələn, digər sistemlər tərəfindən oxunmalı olan faylda ipdən istifadə etmək lazımdırsa, onda bu, daha çox işlənmə tələb edə bilər.

Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Bang Christensen

Müəllif haqqında

Mikkel Bang Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.