Ini postingan lama sebenarnya, jawaban sy untuk salah satu pertanyaan member di forum i-bego.
Sy posting kembali disini untuk tujuan dokumentasi saja, mana tau suatu saat sy butuhkan.
Untuk contoh kasusnya adalah kita akan mengambil salah satu project open source yg bernama QRCode Library dibuat menggunakan C#, dan dengan sedikit modifikasi library .NET ini akan bisa kita gunakan untuk VB 6.
Tapi sebelumnya kita lihat dulu apa itu QR Code ???
QR Code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode (or two-dimensional code) first designed for the automotive industry. More recently, the system has become popular outside the industry due to its fast readability and large storage capacity compared to standard UPC barcodes. The code consists of black modules (square dots) arranged in a square pattern on a white background. The information encoded can be made up of four standardized kinds (“modes”) of data (numeric, alphanumeric, byte/binary, Kanji), or through supported extensions, virtually any kind of data.
Sumber : http://en.wikipedia.org/wiki/QR_code
Contoh QR Code
Oke langsung saja download QRCode Library, untuk contoh disini sy menggunakan C# 2005
- Aktifkan terlebih dulu project QRCode Library
- klik kanan Project (QRCodeLib) -> Properties, aktifkan tab Application kemudian klik tombol Assembly Information … kemudian aktifkan pilihan Make assembly COM-Visible
- Aktifkan tab Build kemudian aktifkan pilihan Register for COM interop
- Mendaftarkan file ThoughtWorks.QRCode.dll dan ThoughtWorks.QRCode.tlb menggunakan tool RegAsm.exe yg ada di folder NET Framework
1
|
|
Contoh saya menggunakan dot NET Framework 2, adapun perintahnya seperti berikut :
1
|
|
Sampai disini QRCode Library sudah bisa diakses dari VB 6
Sekarang kita lihat sample asli dari QRCode Library
Dari sample tersebut kode (C#) untuk melakukan encode sebuah data bertipe string menjadi gambar dengan format QR Code adalah seperti berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
Sedangkan untuk versi VB 6nya sy buat sesimple mungkin
1 2 3 4 5 6 7 8 9 10 |
|
tapi hasilnya malah error ‘Invalid procedure call or argument’ :(, dan berdasarkan hasil pengamatan sementara, menurut sy penyebab errornya adalah karena method Encode adalah method yg dioverload sedangkan method overload belum disupport oleh VB 6.
1 2 |
|
Jadi sy putuskan untuk menambahkan method baru dengan nama EncodeVB6, kemudian mengganti perintah
1
|
|
menjadi
1
|
|
Kode lengkap method EncodeVB6
1 2 3 4 5 6 7 8 9 10 11 |
|
Horeeeeee gubrakk, ternyata…. masih error :( ‘Type mismatch’
1
|
|
dari pesan errornya sudah jelas karena properties Picture bertipe StdPicture sedangkan method EncodeVB6 bertipe Bitmap dan di VB 6 enggak ada tipe Bitmap :(, tapi untungnya :) ada method ImageToIPicture yg diambil dari class Support (namespace Microsoft.VisualBasic.Compatibility.VB6) sehingga method EncodeVB6nya kita revisi menjadi :
1 2 3 4 5 6 7 8 9 10 11 |
|
Sampai disi permasalah method EncodeVB6 sudah selesai :)
Terakhir kita akan melakukan proses decode
dan kita lihat dulu kode aslinya (c#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Dari kode diatas jelas tidak bisa langsung dikonversi ke VB 6 karena VB 6 tidak mendukung pemanggilan constructor class yg mempunyai parameter.
Tapi ada baiknya kita lihat dulu constructor class QRCodeBitmapImage yg ternyata membutuhkan objek Bitmap pada saat dipanggil.
1 2 3 4 5 6 7 8 |
|
Solusinya kita akan menambahkan costructor default (constructor tanpa parameter)
1 2 3 4 |
|
trus untuk melewatkan objek Bitmap ke class QRCodeBitmapImage kita akan menambahkan property baru misal dengan nama SetBitmap, adapun kodenya seperti berikut :
1 2 3 4 |
|
Properties SetBitmap diatas bertipe Bitmap, tapi sayang di VB 6 belum ada padanan tipe datanya jadi kita akan menggunakan tipe Object, kemudian untuk mengkonversi ke tipe Bitmap kita menggunakan method IPictureToImage yg diambil dari class Support (namespace Microsoft.VisualBasic.Compatibility.VB6)
1 2 3 4 |
|
Setelah itu baru kita bisa melakukan konversi dengan aman di VB 6
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Yuph akhirnya selesai juga :)
Selamat MENCOBA :)