Miklix

Pemformatan String dengan Makro dan strFmt di Dynamics AX 2012

Diterbitkan: 16 Februari 2025 pukul 00.48.29 UTC

Artikel ini menjelaskan beberapa perilaku aneh di Dynamics AX 2012 saat menggunakan makro sebagai string format dalam strFmt, serta contoh tentang 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 berdasarkan Dynamics AX 2012 R3. Informasi ini mungkin berlaku atau tidak berlaku untuk versi lain.

Saya baru-baru ini mengalami masalah dengan fungsi strFmt yang sedikit membingungkan saya. Bagian yang paling membingungkan adalah bahwa secara kebetulan aneh saya belum pernah mengalaminya sebelumnya selama bertahun-tahun sebagai pengembang Axapta/Dynamics AX.

Masalahnya adalah saya mencoba menggunakan makro sebagai string format untuk fungsi strFmt dan tidak berhasil. Fungsi tersebut 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 tidak saya ketahui. Yah, mempelajari sesuatu yang baru memang selalu baik, tetapi saya masih sangat terkejut karena saya belum pernah menemukan ini sebelumnya.

Pada dasarnya, sesuatu seperti ini

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

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

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

Sesuatu seperti ini:

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

akan berfungsi, tetapi mungkin tidak sesuai dengan keinginan Anda. Alih-alih menampilkan nilai dari tiga variabel, ia akan menampilkan nama variabel, dalam kasus ini "salesId-itemId-lineNum". (Perhatikan bahwa saya tidak meletakkan spasi setelah koma saat meneruskan parameter ke makro, seperti yang biasa saya lakukan dalam pemanggilan metode. Itu karena makro sebenarnya akan menggunakan spasi tersebut juga, jadi outputnya akan menjadi "salesId-itemId-lineNum" jika saya melakukannya).

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

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

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

Ini sebenarnya akan berfungsi seolah-olah Anda telah menyediakan 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));
}
Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Bang Christensen

Tentang Penulis

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