Miklix

Pemformatan String dengan Makro dan strFmt di Dynamics AX 2012

Diterbitkan: 16 Februari 2025 pukul 00.48.29 UTC
Terakhir diperbarui: 12 Januari 2026 pukul 08.44.26 UTC

Artikel ini menjelaskan beberapa perilaku aneh di Dynamics AX 2012 saat menggunakan makro sebagai string format di strFmt, serta contoh cara mengatasinya.


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

String Formatting with Macro and strFmt in Dynamics AX 2012

Informasi dalam posting ini didasarkan pada Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau mungkin tidak berlaku untuk versi lain.

Baru-baru ini saya menemukan masalah dengan fungsi strFmt yang membuat saya bingung untuk beberapa saat. Bagian yang paling membingungkan adalah, secara kebetulan yang aneh, saya belum pernah menemui masalah ini sebelumnya selama bertahun-tahun sebagai pengembang Axapta/Dynamics AX.

Masalahnya adalah saya mencoba menggunakan makro sebagai string format untuk fungsi strFmt dan itu sama sekali tidak berhasil. Makro tersebut sepenuhnya mengabaikan parameter % dan hanya mengembalikan sisa string.

Setelah menelitinya, saya menemukan bahwa makro itu sendiri dapat digunakan untuk memformat string, yang juga merupakan sesuatu yang belum saya ketahui. Yah, selalu baik untuk mempelajari sesuatu yang baru, tetapi saya tetap sangat terkejut bahwa saya belum pernah menemukan hal ini sebelumnya.

Pada dasarnya, sesuatu seperti ini

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

Ini tidak akan berfungsi karena tanda % dalam makro sebenarnya digunakan untuk fitur pemformatan string makro itu sendiri. Dalam hal ini, fungsi strFmt akan melihat string pemformatan sebagai "--" dan oleh karena itu hanya akan mengembalikan itu.

Kurang lebih seperti ini:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

Ini akan berfungsi, tetapi mungkin tidak sesuai keinginan Anda. Alih-alih menampilkan nilai dari ketiga variabel, makro ini akan menampilkan nama variabelnya, dalam hal ini "salesId-itemId-lineNum". (Perhatikan bahwa saya tidak menambahkan spasi setelah koma saat memberikan parameter ke makro, seperti yang biasanya saya lakukan dalam panggilan metode. Itu karena makro sebenarnya juga akan menggunakan spasi tersebut, sehingga outputnya akan menjadi "salesId-itemId-lineNum" jika saya melakukannya).

Untuk benar-benar menggunakan makro sebagai string pemformatan dengan strFmt, Anda perlu mengescape tanda persen dengan garis miring terbalik, seperti ini:

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

Ini akan berfungsi seolah-olah Anda telah memberikan string format secara langsung.

Pekerjaan kecil ini mengilustrasikan contoh-contohnya:

static void StrFmtMacroTest(Args _args)
{
    #define.FormatMacro('%1-%2-%3')
    #define.FormatMacroEscaped('\\%1-\\%2-\\%3')
    SalesId salesId = '1';
    ItemId  itemId  = '2';
    LineNum lineNum = 3.00;
    ;

    info(#FormatMacro(salesId,itemId,lineNum));
    info(strFmt(#FormatMacro, salesId, itemId, lineNum));
    info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}

Bacaan Lebih Lanjut

Jika Anda menikmati postingan ini, Anda mungkin juga menyukai saran berikut:


Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Christensen

Tentang Penulis

Mikkel Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.