Migrasi vb6 ke vb.net

October 29, 2017 | Author: rhifay | Category: N/A
Share Embed Donate


Short Description

Download Migrasi vb6 ke vb.net...

Description

NET101 – Migrasi VB6 ke VB.NET

Migrasi

VB6 ke VB.NET (NET101)

Kiki Rizki Noviandi Katarina Clementine Milis Tarigan Risman Adnan Kunarto Ricky Suryo Utomo Ario Suryo Aryo Handono

Project Otak 2005 Project Otak – http://otak.csharpindonesia.net

2

NET101 – Migrasi VB6 ke VB.NET

Project Otak Project otak adalah project open source yang bertujuan untuk menyediakan resources tentang informasi teknologi .NET bagi orang-orang yang ingin belajar teknologi .NET.

Trademark Acknowledgements Team project otak akan berusaha menyediakan informasi trademark termasuk semua produk yang telah disebut didalam buku ini. Windows, Framework .NET, Visual VB.NET, dan Visual Studio.NET adalah trademark dari Microsoft

Credits Project Manager Agus Kurniawan

Technical Writer Kiki Rizki Noviandi (Leader) Katarina Clementine Milis Tarigan Risman Adnan Kunarto Ricky Suryo Utomo Ario Suryo Kusumo Aryo Handono

Editor Kiki Rizki Noviandi Agus Kurniawan

Cover Designer Danni Afasyah

Version 1.0 Printed: 10 Januari 2005 Book Code: NET101 Update E-Book : http://otak.csharpindonesia.net

Semua materi yang ada didalam buku ini adalah satu kesatuan. Tidak boleh sebagian atau seluruh materi didalam buku ini diubah tanpa seijin team project otak.

Project Otak – http://otak.csharpindonesia.net

3

NET101 – Migrasi VB6 ke VB.NET

Kata Pengantar

Dengan memanjatkan puji syukur kehadirat Tuhan Yang Maha Esa atas segala rahmat dan hidayah NYA, Kami team Project Otak berhasil menyelesaikan project lain yang merupakan project delivery dari Project Otak yaitu e-book dengan judul Migrasi dari VB 6 ke VB NET. Semoga buku ini dapat bermanfaat bagi masyarakat Indonesia yang ingin belajar dan memahami VB .NET lebih lanjut khususnya bagi yang akan melakukan migrasi dari VB 6 ke VB.NET. Kami menyadari sebagai manusia penulis masih banyak sekali kekurangan dalam penulisan buku ini. Oleh karena itu kami sangat berharap saran dan masukan dari pembaca atas buku ini demi perbaikan kualitas buku ini . Dengan motto KNOWLEDGE is FREE, kami ucapkan selamat membaca.

Salam, Jakarta, 6 Januari 2004

Team Project Otak

Project Otak – http://otak.csharpindonesia.net

4

NET101 – Migrasi VB6 ke VB.NET

Tentang Penulis Kiki Rizki Noviandi Kiki Rizki Noviandi, Adalah seorang Solutions Manager pada sebuah perusahaan IT Consulting di Jakarta yaitu INTIMEDIA. Mempelajari .NET dari mulai versi beta dan mulai terjun dalam project dengan teknologi .NET ketika .NET pertama kali di launching. Memiliki pengalaman menangani beberapa project dengan platform yang berbeda menyebabkan pria ini menyukai teknologi yang bersifat integrasi di level enterprise solution. Selain itu dalam hal Computer science pria ini juga menyukai hal yang berhubungan dengan desain system dan software architecture. Kupersembahkan buku ini untuk istriku tercinta Nenden dan putraku tersayang Luqman yang selalu menjadi sumber inspirasi ku... thanks to otak member dan Intimedian yang telah membantu terbitnya buku ini. Pada pembuatan buku ini kiki terlibat dalam pembuatan materi untuk bab 6

Risman Adnan Risman Adnan adalah salah satu pendiri dari INDC (Indonesia .NET Developer Community) yang saat ini bekerja sebagai Developer Evangelist di Microsoft Indonesia. Sebelum berkecimpung di dunia IT, Risman Adnan adalah scientific programmer yang bekerja dalam penelitian mengenai semikonduktor amorf silikon karbon. OOP, .NET , C# Kupersembahkan buku ini : "To Principessa,..." Risman Adnan telah memberikan kontribusi di buku ini pada bab 4

Project Otak – http://otak.csharpindonesia.net

5

NET101 – Migrasi VB6 ke VB.NET

Katarina Maya

Clementine

Dewi

Katarina Clementine Dewi Maya adalah Developer untuk Loaning System di perusahaan Internet Solutions PT.Adicipta Inovasi Teknologi (Ad-Ins) yang dalam kesehariannya menggunakan bahasa pemrograman Visual Basic .NET dan SQL Server 2000. Sebelumnya bergerak di dunia .NET, pernah menjadi developer Visual Basic 6 (2003),System Analyst untuk Neodone System.Lahir di Jakarta 23 November 1982. Alumni Bina Nusantara jurusan Teknik Informatika. Di kala senggangnya masih aktif di komunitas Microsoft, salah satunya adalah Project OTAK “Knowledge is Free” ,sering mengutak atik games 3D untuk kaum hawa, membongkar CPU, penikmat Jazz - relaksasi – Slow Rock, window shopping , kolektor pensil kayu. Kupersembahkan buku ini: Untuk Cinta-cinta dan topangan hidup saya… Pa n Ma, Tac, Ok2, Osh2 , Oc, bayi2 Ian dan Nadine (with love from“SAM”(ku)),Y. Gosal, S. Lestari, Asen, Kurnia T., Yudo, VMAG, Effendi Ng, Danny Effendy,segenap komunitas Microsoft dan keluarga besar Ad-Ins Dewi Maya telah memberikan kontribusi di buku ini pada bab 1 dan 2

Project Otak – http://otak.csharpindonesia.net

6

NET101 – Migrasi VB6 ke VB.NET

Dirgahayu Tarigan Dirgahayu Tarigan menyukai semua hal yang berhubungan dengan IT dan Telekomunikasi dan senang belajar hal yang baru. Ia mempunyai pengalaman sebagai Developher dan Trainer. Saat ini bekerja di salah satu Perusahaan IT di Jakarta. Kupersembahkan buku ini: Buat siapa saja yang mau belajar dan terima kasih kepada komunitas milis yang telah membagikan ilmunya. Dirgahayu Tarigan telah memberikan kontribusi di buku ini pada bab 3

Ricky Suryo Utomo Ricky Suryo Utomo sehari-harinya adalah .NET Developer dan Mobile Game Developer pada PT. Adicipta Inovasi Teknologi (AdIns). Ricky lahir di Surabaya 29 Februari 1980 dan lulusan angkatan’97 dari Sekolah Tinggi Teknik Surabaya (STTS). Ricky terlibat dalam beberapa project yang dikembangkan dengan Microsoft .NET khususnya menggunakan Visual Basic .NET. Selain itu selain menjadi developer aplikasi bisnis, Ricky juga mengembangkan project PDA Game dengan judul Burning Armor yang telah dipasarkan secara international, dalam bahasa programVisual C++. Kupersembahkan buku ini: Golzen, Guntur, Ferunita, Candra, Lea, Era, Team MAX, rekan rekan AdIns dengan supportnya, rekan-rekan Project Otak yang telah memberikan kepercayaan. Ricky telah memberikan kontribusi di buku ini pada bab 8

Project Otak – http://otak.csharpindonesia.net

7

NET101 – Migrasi VB6 ke VB.NET

Kunarto Figur Low Profile dan apa adanya senantiasa terbawa dalam keseharian pemilik nick name “ch03n” ini. Tak mudah bergantung pada orang lain dan senantiasa mengexplore sampai batas kemampuan maximal diri adalah suatu keharusan dalam mempelajari sesuatu, oleh karenanya motto dari web www.tekun.com “Seni Belajar Sendiri” sangatlah selaras dengan pemiliknya. Lahir di Pati, tgl 02 agustus 1975, sebuah kota kecil di Jawa tengah dan hanya berbekal ijasah SLTA. Mencoba peruntungan nasib dibelantara Pendekar IT di ibu kota dengan berbekal Pengetahuan tentang Hardware, Programming (Visual FoxPro, Vb.Net , Asp.Net , MSSql) , Networking dan server Administration Saat ini bekerja sebagai IT Manager disebuah perusahaan Asing (Korea) dan aktif mendedikasikan dirinya untuk berbagi ilmu – ilmu apa aja yang bermanfaat lewat Personal site www.tekun.com & www.kunarto.com dan bergabung dalam INDC Group Leader dan Tugas mengurus Artikel Portal untuk www.vbindonesia.net & www.aspxindonesia.net Dipersembahkan Tulisan ini untuk : Keluarga Besar ku. ☺ Kunarto telah memberikan kontribusi di buku ini pada bab 7

Project Otak – http://otak.csharpindonesia.net

8

NET101 – Migrasi VB6 ke VB.NET

Aryo Handono Aryo Handono lahir pada bulan Desember 1979 di Jakarta dan telah menamatkan studinya di Universitas Indonesia. Saat ini bekerja sebagai IT Consultant pada perusahaan manufacture Jepang dan juga sambil mengerjakan beberapa project pribadi dengan rekan tim yang lain. Hobi makan, baca dan sering menghabiskan waktu untuk develop program dan Games. Dipersembahkan Tulisan ini untuk : Karya ini dipersembahkan kepada Allah SWT, orang tua tercinta, adik – adik tercinta dan tak kurang kepada seseorang yang sangat istimewa dan berarti bagi penulis. Aryo Handono telah memberikan kontribusi di buku ini pada bab 5

Ario Surya Kusumo Ario Surya adalah Instruktur .NET pada lembaga pendidikan Tanmia Pasar Minggu Jakarta juga penulis artikel dan buku tentang VB dan VB.NET. Dia juga adalah mahasiswa S2 Magister Sistem Informasi, Univ Gunadarma Jakarta Ario Surya Kusumo telah memberikan kontribusi di buku ini pada bab 2

Project Otak – http://otak.csharpindonesia.net

9

NET101 – Migrasi VB6 ke VB.NET

Daftar Isi Project Otak .......................................................................................................3 Credits .................................................................................................................3 Kata Pengantar .....................................................................................................4 Tentang Penulis ....................................................................................................5 Daftar Isi .............................................................................................................10 1. Visual Basic .NET bukan sekedar Visual Basic 6 + 1 .....................................13 1.1 Alasan Microsoft mengembangkan Teknologi .NET? ........................................... 13 1.1.1 Migrasi dari Visual Basic ke Visual Basic.Net.................................................. 13 1.2 Fitur-Fitur baru yang terdapat pada .NET.......................................................... 14 1.3 Bekerja dengan Visual Basic 6.0 dan Visual Basic.NET .................................. 14 1.3.1 Aplikasi Browser-based ..................................................................................... 14 1.3.2 Aplikasi berbasis Client-Server ......................................................................... 15 1.3.3 Aplikasi Single – Tier ........................................................................................ 15 1.3.4 Data .................................................................................................................... 15 1.4 Mengapa Migrasi dari vb6 ke vb.net?................................................................ 16 1.5 Kesimpulan ........................................................................................................ 17 2. Pengenalan Framework .NET.........................................................................18 2.1 Apakah Framework .NET? ..................................................................................... 18 2.1.1 Pustaka class Framework .NET .......................................................................... 20 2.1.2 Common Language Runtime .............................................................................. 20 2.2 Bahasa Pemrograman Yang Mendukung Framework .NET ................................. 23 2.3 Tujuan Desain Framework .NET........................................................................... 23 2.3.1 Infrastruktur Komponen...................................................................................... 23 2.4 Keuntungan yang didapatkan dari .NET Framework ............................................. 24 3. Perbedaan Visual Basic 6 dengan Visual Basic .NET ....................................26 3.1 Pendahuluan............................................................................................................ 26 3.2 Antar Muka (IDE)................................................................................................... 26 3.2.1. Perubahan Tampilan dan Layout ........................................................................ 27 3.2.2 Perubahan Menu .................................................................................................. 28 3.2.3 Penggunaan Keyboard ......................................................................................... 31 3.3 Perubahan Project ................................................................................................... 31 3.3.1 Perubahan Project Property dalam Visual Basic .NET........................................ 32 3.3.2 Perubahan Template dalam Visual Basic .NET................................................... 33 3.3.3 Perubahan Reference dalam Visual Basic .NET.................................................. 33 3.4 Perubahan Bahasa ................................................................................................... 33 3.5 Ringkasan Perubahan.............................................................................................. 33 3.5.1 Array .................................................................................................................... 39 3.5.2 Perubahan Perintah ReDim.................................................................................. 40 3.5.3 Perubahan Tipe Data........................................................................... 40 3.5.4 Function ............................................................................................................... 41 3.5.5 Procedure ............................................................................................................. 42

Project Otak – http://otak.csharpindonesia.net

10

NET101 – Migrasi VB6 ke VB.NET

3.5.6 Perubahan Debugger............................................................................................ 42 4. Upgrade Aplikasi VB 6 ke VB.NET .................................................................43 4.1 Upgrade Wizard ...................................................................................................... 43 4.2 Rekomendasi Sebelum Melakukan Upgrade .......................................................... 45 4.3 Upgrade Project Group ........................................................................................... 46 4.4 Menggunakan VB Snippet Add-In ......................................................................... 47 4.5 Metodologi Dalam Upgrade Wizard....................................................................... 48 4.6 Kesimpulan ............................................................................................................. 50 5. Melakukan Migrasi Aplikasi Sederhana ..........................................................51 5.1 Apakah Migrasi itu perlu ........................................................................................ 51 5.2 Yang Hilang di VB.NET......................................................................................... 51 5.3 Persiapan sebelum migrasi...................................................................................... 52 5.4 Contoh Migrasi dari VB6 ke VB.NET ................................................................... 53 6. Masalah Pada Proses Upgrade ......................................................................61 6.1 Default Properties ................................................................................................... 61 6.2 AddItem dan ToString menggunakan COM Objects .......................................... 62 6.5. Deterministic Finalization dengan Garbage Collection........................................ 64 6.4 Dim…As New ....................................................................................................... 65 6.5 Sub Main (or Default Form) ................................................................................. 66 6.6 Bad Constants ......................................................................................................... 67 6.7 Drag and Drop......................................................................................................... 68 6.8 Collection Classes................................................................................................... 73 6.9 Kesimpulan ............................................................................................................. 76 7. Debuging in VB.Net ........................................................................................77 7.1 Debuging................................................................................................................. 77 7.2 Debuging Consepts ................................................................................................. 77 7.3 Debug Menu............................................................................................................ 78 7.3.1 Step Into ............................................................................................................... 79 7.3.2 Step Over ............................................................................................................. 80 7.3.3 Step Out ............................................................................................................... 81 7.3.4 Run To Cursor...................................................................................................... 82 7.4. Watches.................................................................................................................. 82 7.5 BreakPoint............................................................................................................... 83 7.6 Exceptions Window ................................................................................................ 84 7.7 Try Statement.......................................................................................................... 86 7.8 Command Window ................................................................................................. 87 7.9 Kesimpulan ............................................................................................................. 88 8. Case study migrasi Visual Basic ke Visual Basic.NET dengan menggunakan wizards................................................................................................................89 8.1 Aplikasi VCR.......................................................................................................... 89 8.2 Pengelompokan code menjadi empat versi............................................................. 90 8.3 Menjalankan Code Advisor fo Visual Basic 6.0..................................................... 90 8.4 Melakukan Upgrade dari Visual Basic ke Visual Basic.NET dengan wizards ...... 91 8.5 Melakukan enhancement dan modifikasi................................................................ 95 8.6 Balai Pustaka........................................................................................................... 95 Daftar Pustaka ....................................................................................................96

Project Otak – http://otak.csharpindonesia.net

11

NET101 – Migrasi VB6 ke VB.NET

Lampiran.............................................................................................................97 Strukutur Organisasi Project Otak 2005-2006 ....................................................98 Program Donatur Project Otak..........................................................................100

Project Otak – http://otak.csharpindonesia.net

12

NET101 – Migrasi VB6 ke VB.NET

1. Visual Basic .NET bukan sekedar Visual Basic 6 + 1 Katarina Clementine Dewi Maya

1.1 Alasan Microsoft mengembangkan Teknologi .NET? Evolusi dari teknologi Microsoft selalu terfokus pada teknologi yang terdepan. Pengeluaran tools baru dari Microsoft selalu berhubungan dengan teknologi terakhir yang sedang dilirik oleh pasar. Salah satunya adalah .NET. Teknologi .NET membutuhkan 3 tahun untuk tahap pengembangannya sebelum akhirnya dirilis pertama kali pada Februari 2002. .NET Teknologi adalah suatu platform baru di dalam pemrograman untuk lingkungan yang terdistribusi luas(internet). Istilah .NET sering diasosiasikan dengan proses yang berjalan pada platform .NET. Teknologi .NET adalah pemrograman berbasis jaringan atau biasa disebut dengan webbased. Hal ini membuat .NET mudah dijalankan dimana saja karena dimana Anda memiliki Internet Explorer, disanalah .NET dapat dijalankan. Bentuk keunggulan dari .NET juga terealisasi dengan kompilasi source-code dimana semua program akan dikompilasi menjadi MSIL(Microsoft Intermediate Language). Dan MSIL dikompilasi dengan .NET Compiler sehingga menjadi bahasa mesin pada saat akan digunakan. Pada buku ini kita akan membahas lebih jauh mengenai teknologi Visual Basic.NET.

1.1.1 Migrasi dari Visual Basic ke Visual Basic.Net Microsoft Visual Basic .NET adalah pengembangan lebih lanjut dari bahasa pemrograman visual basic.Developer Visual Basic 6 akan merasa familiar dalam penggunaan Visual Basic .NET dan mengenal sebagian besar konstruksinya yang mirip. Namun bagaimanapun Microsoft telah membuat beberapa perubahan yang membuat Visual Basic.NET sebagai bahasa pemrograman yang lebih baik dan menjadi setara dalam teknologi .NET sebagaimana bahasa pemrograman .NET yang lainnya. Hal ini termasuk penambahan keyword Class untuk mendefinisikan kelas-kelas dan keyword Inheritance untuk objek Inheritance. Hasil coding pada Visual Basic 6 tidak bisa dikompilasi pada Visual Basic .NET tanpa modifikasi yang signifikan, namun kita tidak perlu kuatir, karena Microsoft menyediakan tools untuk migrasi untuk menangani hal tersebut.

Project Otak – http://otak.csharpindonesia.net

13

NET101 – Migrasi VB6 ke VB.NET

1.2

Fitur-Fitur baru yang terdapat pada .NET

Dengan dirilisnya .NET platform, Visual Basic telah mengalami perubahan sbb: Pemrograman Object-Oriented (OOP) sepenuhnya.Pemrograman berorientasi objek. Pemrograman ini mempertinggi kualitas dan produktifitas pengembangan software. Program pengembangannya dilakukan dengan pendekatan building block. Setiap block, disebut object, bersifat independen dan mampu berjalan sendiri atau saling kunci dengan object lain dengan mudah dan otomatis. Object-object berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya. Masing-masing object harus berisikan informasi mengenai dirinya sendiri(encapsulation) dan object yang dapat dikaitkan (Inheritance). Aplikasi dan komponen yang ditulis di Visual Basic .NET memiliki akses penuh untuk .NET Framework (yang akan dibahas lebih lanjut pada bab 2) sebagai class library yang menyediakan system dan application services. Semua aplikasi yang dijalankan oleh teknologi .NET menggunakan runtime yang telah di manage sedemikian rupa , atau umumya disebut sebagai Common Language Runtime(CLR)

1.3

Bekerja dengan Visual Basic 6.0 dan Visual Basic.NET

Program dan aplikasi Visual Basic 6.0 dan Visual Basic .NET bisa dipasang dan dieksekusi sekaligus di satu komputer yang sama. Komponen-komponen yang ditulis di Visual Basic .NET bisa berinteroperasi dengan komponen COM yang ditulis di Visual Basic 6.0. Sebagai contoh, kita bisa meletakkan kontrol ActiveX yang ditulis di Visual Basic 6.0 ke Windows Form di Visual Basic .NET class library, atau menambahkan Visual Basic .NET library ke Visual Basic 6.0 exe. Di bawah ini kita lakukan klasifikasi perbandingan antara Visual Basic 6.0 dan Visual Basic .NET sebagai hal-hal yang perlu diperhatikan apabila kita melakukan upgrade dari Visual Basic 6.0 ke Visual Basic .NET: Aplikasi Browser Based Aplikasi berbasis Client-Server Aplikasi Single-Tier Data

1.3.1 Aplikasi Browser-based Aplikasi Browser-based adalah : beberapa teknologi pendukung untuk membuat aplikasi Internet dan Intranet yang menggunakan browser sebagai tempat dijalankannya suatu program. Pada Visual Basic 6.0 hal-hal yang mendukung Aplikasi Browser-based adalah:

Project Otak – http://otak.csharpindonesia.net

14

NET101 – Migrasi VB6 ke VB.NET

Webclasses DHTML projects ActiveX documents Active Server Pages (ASP) Pada Visual Basic .NET hal-hal tersebut mengalami perubahan , sbb: Webclasses sudah tidak digunakan di Visual Basic .NET karena telah digunakan ASP.NET Aplikasi DHTML terdiri dari halaman DHTML dan DLL di pihak client. Aplikasi ini tidak bisa diupgrade secara otomatis ke Visual Basic .NET sehingga sebaiknya tetap ditinggal di Visual Basic 6.0. Di Visual Basic. NET disebut Web Form. dokumen ActiveX tidak disupport di Visual Basic .NET dan sama halnya dengan DHTML project DHTML yang tidak bisa diupgrade secara otomatis. Sehingga sebaiknya tetap ditinggal juga di Visual Basic 6.0.Di Visual Basic disebut user control. Pada Visual Basic .NET telah digunakan ASP.NET sebagai perluasan dari ASP. ASP.NET ditambahkan pada arsitektur Web Form (sama dengan halaman HTML dengan event Visual Basic). Arsitekturnya berbasis server(Server based). Aplikasi DHTML dan dokumen ActiveX bisa saling berinteroperasi dan menavigasi satu sama lain dengan teknologi baru yang terdapat pada .NET, sehingga memungkinkan untuk menavigasi Visual Basic .NET Web Form ke Visual Basic 6.0 DHTML page, dan sebaliknya.

1.3.2 Aplikasi berbasis Client-Server Project berbasis Client-Server adalah: Sistem terdistribusi dimana suatu perangkat lunak terbagi atas tugas server dan tugas client. Clien mengirim permintaan ke pihak server, melalui protocol, dan menanyakan informasi atau aksi, kemudian server memberi tanggapan/respon. Teknologi yang digunakan Visual Basic 6.0 untuk membuat aplikasi berbasis Client Server adalah sbb: Visual Basic Forms Microsoft Transaction Server (MTS)/COM+ middle-tier objects User controls

1.3.3 Aplikasi Single – Tier Tier adalah konsep untuk memudahkan pengelompokan dari arsitektur yang memiliki kelas-kelas yang berbeda. Pada dasarnya, apabila sebuah aplikasi dijalankan disebuah single komputer, maka aplikasi tersebut berbasis Single-Tier. Keuntungan dari aplikasi single tier adalah kesederhanaan, performance yang tinggi dan mensupport diri sendiri. Beberapa tipe Single-Tier yang didukung oleh Visual Basic 6.0 adalah sbb: Single-tier database applications Visual Basic add-ins Utility programs and games

1.3.4 Data Data adalah: Fakta, atau bagian fakta yang mengandung arti, yang dihubungkan dengan kenyataan, simbol-simbol, gambar-gambar, kata-kata, angka-angka, huruf-huruf atau simbol-simbol yang menunjukkan suatu ide, objek, kondisi, atau situasi dan lain-lain.

Project Otak – http://otak.csharpindonesia.net

15

NET101 – Migrasi VB6 ke VB.NET

Data itu sendiri merupakan bentuk jamak dari datum yang berarti informasi. Jelasnya data itu dapat berupa apa saja dan dapat ditemui di mana saja, Visual Basic 6.0 menawarkan beberapa tipe data access: ActiveX Data Objects (ADO) Remote Data Objects (RDO) Data Access Objects (DAO)

1.4

Mengapa Migrasi dari vb6 ke vb.net?

Alasan dilakukan Migrasi dari Visual Basic 6 ke Visual Basic .NET: Mendeploy aplikasi sekarang semudah mengkopi komponen dan .exe dari 1 direktori ke direktori yang lain. Web Forms dan ADO.NET yand disediakan di Visual Studio .NET memungkinkan kita bisa membuat Web Site dengan cepat Windows Forms mendukung inheritance Selain bisa mengembangkan komponen aplikasi dengan berbagai bahasa pemrograman , kelas-kelas yang kita buat bisa diturunkan(inherit) dari bahasa pemrograman yang 1 untuk digunakan di bahasa pemrograman yang lainnya dengan menggunakan penurunan cross-language(cross-language inheritance). Dan dengan penyatuan debug(unified debugger), kita bisa mendebug aplikasi yang menggunakan lebih dari 1 bahasa pemrograman, terlepas dari apakah kita menjalankan debug di local computer atau remote komputer. Apapun bahasa pemrograman yang digunakan, Microsoft .NET framework menyediakan banyak API untuk Microsoft Windows dan Internet. Visual Basic .NET sekarang telah diintegrasi sepenuhnya dengan bahasa pemrograman Visual Studio .NET lainnya. Visual Basic.NET mengalami perubahan yang mendasar dari pemrograman berbasis Windows untuk membuat aplikasi Web dan N-Tier , dan karena alasan inilah kita mendapat keuntungan dari migrasi yang kita lakukan. Hal ini terjadi secara otomatis pada saat kita membuka proyek Visual Basic 6.0 di Visual Basic .NET: Upgrade Wizard akan membawa kita untuk proses migrasi dan membuat proyek baru Visual Basic .NET(proyek lama akan tetap ada tanpa diganggu gugat). Namun, Proyek Visual Basic .NET tidak bisa dibuka di layar Visual Basic 6.0 disebabkan versi Visual Basic 6.0 yang lebih rendah dari Visual Basic .NET, hal ini disebut juga dengan proses searah. Pada saat kita melakukan upgrade dari Visual Basic 6.0, terjadi modifikasi sintaks bahasa pemrograman dan Form Visual Basic 6.0 dikonversi menjadi Windows Form. Dan tidak dapat kita pungkiri bahwa dalam beberapa kasus, kita perlu melakukan perubahan pada coding Visual Basic 6.0, karena setelah di-upgrade ada beberapa obyek dan fitur bahasa yang tidak sama atau baru di Visual Studio .NET sehingga perlu sinkronisasi dari faktor manusianya. Setelah dilakukan upgrade, kita bahkan bisa mendapatkan keuntungan dengan menggunakan fitur-fitur baru yang terdapat pada Visual Basic .NET.

Project Otak – http://otak.csharpindonesia.net

16

NET101 – Migrasi VB6 ke VB.NET

1.5

Kesimpulan

Berdasarkan penjelasan-penjelasan di atas, penulis cukup yakin seiring akan adanya perkembangan teknologi,maka diperlukan adanya migrasi dari Visual Basic ke Visual Basic .NET , namun tidak dapat dipungkiri bahwa sejauh ini masih banyak digunakan bahasa pemrograman Visual Basic disesuaikan dengan kebutuhan pasar dan faktor biaya.Tetapi dari segi fitur dan fasilitas yang disediakan oleh Microsoft, Visual Basic .NET telah mewujudkan bahasa pemrograman Visual Basic teknologi informasi masa depan.

Project Otak – http://otak.csharpindonesia.net

17

NET101 – Migrasi VB6 ke VB.NET

2. Pengenalan Framework .NET Ario Suryo Kusumo & Katarina Clementine Dewi Maya

Microsoft .NET adalah software yang menghubungkan informasi, orang, sistem dan device/perangkat yang menjangkau client, server dan tool-tool pengembang. Microsoft .NET disusun oleh: • Framework .NET, digunakan untuk membangun dan menjalankan semua macam software termasuk aplikasi Windows, aplikasi berbasis Web, aplikasi smart client, dan Layanan Web XML (Extensible Markup Language). Menyediakan komponen untuk berbagi data melalui Network menggunakan platform protokol independen seperti XML, SOAP, dan HTTP. • Tool-tool pengembang seperti Microsoft Visual Studio .NET yang menyediakan IDE (Integrated Development Environment, lingkungan pengembangan terintegrasi) untuk memaksimalkan produktifitas pengembangan menggunakan Framework .NET. • Serangkaian server termasuk Microsoft Windows Server 2003, Microsoft SQL Server dan Microsoft BizTalk Server yang terintegrasi, untuk menjalankan, mengoperasikan dan mengelola services Web dan aplikasi berbasis Web. • Software client seperti Windows XP, Windows CE, Windows Mobile dan Microsoft Office XP yang membantu pengembang untuk menyebarkan dan mengelola aplikasinya.

2.1 Apakah Framework .NET? Framework (kerangka kerja) .NET yang merupakan middleware antara aplikasi dengan sistem operasi adalah lingkungan untuk membangun, deploy (menyebarkan) dan menjalankan aplikasi .NET. Framework .NET disusun oleh dua komponen utama yaitu .NET Framework Class Library (pustaka class Framework .NET) dan Common Language Runtime (runtime bahasa umum)

Project Otak – http://otak.csharpindonesia.net

18

NET101 – Migrasi VB6 ke VB.NET

VB.NET

C++.NET

C#.NET

J#.NET



Common Language Specification (CLS) XML Web Service

ASP.NET

Form-form Web

Form-form Windows

Data ADO.NET dan XML Base Class Library (BCL) Common Language Runtime (CLR)

Gambar 2-1 Framework .NET Tujuan dari Framework .NET adalah: • Menyediakan lingkungan pemrograman berorientasi objek, apakah kode objek disimpan dan dijalankan secara lokal, dijalankan secara lokal tetapi disebarkan melalui Internet atau dijalankan secara remote (dijalankan dari suatu tempat). • Menyediakan lingkungan untuk menjalankan suatu kode yang meminimalkan konflik saat software deployment/disebarkan dan versioning/tentang versi. • Menyediakan lingkungan untuk menjalankan suatu kode yang menjamin keamanan saat kode dijalankan, termasuk kode yang dibuat oleh pihak yang unknown/tidak diketahui atau pihak ketiga yang semi-trusted/setengah dipercaya. • Menyediakan lingkungan untuk menjalankan suatu kode yang dapat mengeliminasi masalah performa dari lingkungan skripted dan interpreted. • Membuat pengembang memiliki pengalaman yang konsisten dalam berbagai tipe aplikasi seperti aplikasi berbasis Windows dan aplikasi berbasis Web. Pada Gambar 2.1 terlihat level tertinggi dari Framework .NET adalah kompiler Visual Basic .NET dan bahasa-bahasa pemrograman lainnya. Dibawah kompiler terdapat CLS (Common Language Specification, spesifikasi/perincian bahasa umum). Spesifikasi adalah serangkaian aturan yang menentukan fitur minimum yang harus mendukung dari suatu bahasa untuk memastikan bahwa bahasa tersebut akan interoperate dengan CLS-compliant (bahasa yang kompatibel dengan CLS) lainnya dan tool-tool. Sepanjang bahasa tersebut mendukung CLS, maka dapat dipastikan akan bekerja dengan CLR. Seperti yang Anda lihat pada Gambar di atas, VB.NET sejajar dengan C++.NET , C#.NET, J++.NET, J#.NET dan bahasa-bahasa pemrograman lainnya yang mendukung .NET. Sekarang VB.NET memiliki tipe variabel, array, UDF (user-defined types, tipe yang didefinisikan pemakai), class, form grafikal, kontrol visual, dan antar muka yang sama dengan bahasa pemrograman lainnya. Struktur umum tersebut membuat pemanggilan class dari satu bahasa .NET ke bahasa .NET lainnya akan lebih mudah.

Project Otak – http://otak.csharpindonesia.net

19

NET101 – Migrasi VB6 ke VB.NET

2.1.1 Pustaka class Framework .NET Pustaka class Framework .NET, pada Gambar 1.1, dibagi menjadi 4 area yang berwarna abu-abu muda yaitu: • ASP.NET untuk pembuatan aplikasi form-form Web yang berbasis UI (User Interface, antar muka pengguna) dan Service Web untuk pengembangan antar muka secara terprogram. • Pengembangan antar muka pengguna pada platform Windows dapat dilakukan menggunakan Form-form Windows. • Fungsi akses data disediakan oleh ADO.NET dan XML • Base Class Library (pustaka class-class dasar) berisi koleksi class-class kode terkelola yang menyediakan services/layanan esensial untuk mengembangkan aplikasi dalam .NET. Class-class pada Framework diorganisasikan kedalam kelompok-kelompok yang saling berhubungan, tersusun secara hierarki dan disebut namespace. Ketika aplikasi akan mengakses class, yang pertama dilakukan adalah mengakses namespace yang berhubungan.

2.1.2 Common Language Runtime Common language runtime/CLR/runtime bahasa umum (runtime) merupakan dasar dari Framework .NET. Runtime adalah adalah lingkungan eksekusi untuk .NET yang akan memanggil, mengelola dan menjalankan kode Anda. Runtime menyediakan sejumlah services/layanan, seperti berikut ini: • Mengelola kode (loading dan menjalankan). • Isolasi memori aplikasi. • Verifikasi untuk keamanan type. • Konversi dari IL (Intermediate Language) ke kode native/bahasa mesin. • Akses metadata (tipe informasi yang diperkaya). • Mengelola memori pada objek managed/terkelola. • Mengelola keamanan kode askes. • Menangani eksepsi (kejadian yang tidak diharapkan yang muncul saat kode dieksekusi) termasuk eksepsi lintas bahasa. • Inperoperation diantara managed code, objek COM, dan pre-existing DLL (unmanaged code dan data). • Otomatisasi layout objek. • Mendukung services pengembang (profiling, debugging, dan sebagainya).

Project Otak – http://otak.csharpindonesia.net

20

NET101 – Migrasi VB6 ke VB.NET

Gambar 2-2 Arsitektur Framework .NET (sumber: Microsoft MSDN) Konsep pengelolaan kode merupakan prinsip dasar dari runtime. Kode yang menjadi target dari runtime disebut managed code/kode terkelola, sedangkan kode yang tidak menjadi target runtime disebut unmanaged code/kode yang tak dikelola. VB.NET akan menjalankan managed code apabila dalam sistem komputer tersebut terdapat CLR atau dengan kata lain pemakai tidak dapat menjalankan aplikasi VB.NET tanpa menginstal CLR terlebih dulu. CLR “mengetahui” apa yang akan dilakukan pada data khusus (disebut metadata) yang berada dalam aplikasi. Metadata berisi peta dimana menemukan class, kapan memanggil class dan kapan mengatur batas isi runtime, menghasilkan native code/kode asli, mengatur keamanan, menentukan class mana yang menggunakan metode dan memanggil class jika dibutuhkan. CLR juga menentukan kapan suatu objek digunakan dan dilepas. Semua itu disebut managed code. Kode yang dikompilasi dengan COM dan deklarasi Win32API disebut unmanaged code, apa yang Anda dapatkan ketika menggunakan VB versi sebelumnya. Ada dua cara yang dapat Anda lakukan pada unmanaged code. Anda dapat mengekspor komponen COM ke Framework .NET atau Anda dapat mengekspos komponen .NET ke COM. Framework .NET dapat di-hosted oleh komponen unmanaged yang memanggil CLS ke prosesnya dan menjalankan managed code sehingga menciptakan lingkungan software yang menggunakan fitur managed dan unmanaged. Managed code membuat kita tidak tergantung pada file DLL (Dynnamic Link Library), registri, GUID (Graphicals User Idetifications), AddRef, HRESULT, semua macros dan API (Application Programming Interfaces).

Project Otak – http://otak.csharpindonesia.net

21

NET101 – Migrasi VB6 ke VB.NET

Untuk melakukan kegiatan Runtime, dibutuhkan kompiler bahasa yang mengikuti CLS (Common Language Specification) yang menerangkan suatu subset tipe data yang didukung oleh runtime serta umum dipakai oleh semua bahasa dalam lingkup .NET. Kompiler bahasa akan mengkompilasi kode yang ditulis oleh pengembang menjadi sebuah bahasa tingkat menengah yang disebut MSIL (Microsoft Intermediate Language) atau disingkat IL saja, yang kemudian akan dikompilasi menjadi bahasa native(kode mesin) oleh runtime pada saat instalasi, atau dikompilasi menjadi JIT (Just-in-time) pada awal eksekusi. Runtime didesain untuk meningkatkan performa. Meskipun CLR banyak menyediakan layanan standar, managed code tidak pernah diinterpretasikan/diterjemahkan. JIT akan mengkompilasi semua managed code agar dapat berjalan pada bahasa mesin native dari sistem dimana program dijalankan. Sementara itu pengelola memori akan menghilangkan kemungkinan memori terdefragmentasi dan meningkatkan referensi lokal dari memori untuk meningkatkan kecepatan. Kode yang dikompilasi oleh MSIL dan dikelola oleh runtime merupakan managed code/kode terkelola. Disebut managed code karena tanggung jawab pengelolaan eksekusinya dilakukan oleh runtime termasuk instansi objek, alokasi memori dan pengumpulan sampah objek oleh memori. Komponen-komponen yang dikelola oleh runtime disebut managed assembly atau disingkat assembly. Assembly adalah unit dasar penerapan dalam dunia .NET. Sebuah Assembly memiliki manifest/manifestasi yaitu serangkaian metadata yang menerangkan isi assembly. Salah satu kelebihan assembly adalah sifat menerangkan-diri pada komponen .NET artinya untuk menjalankan komponen-komponen tersebut tidak perlu diregister pada komputer. Metadata juga menerangkan dependensi dan informasi versi yang berkaitan dengan suatu assembly. Hal ini bukan saja mempermudah untuk memastikan bahwa semua dependensi yang diperlukan sudah terpenuhi, tapi juga berarti berbagai versi assembly yang sama dapat berjalan berdampingan dalam satu komputer tanpa menimbulkan konflik. Banyak orang yang pernah mengalami peristiwa yang disebut “DLL Hell” atau “petaka DLL”. Petaka DLL adalah masalah yang muncul ketika beberapa aplikasi menggunakan komponen umum yang sama. Hal itu terjadi ketika file DLL yang lama atau yang baru menindih file DLL sebelumnya, setelah menginstal suatu aplikasi baru. Biasanya DLL yang baru tidak kompatibel ke belakang. Akibatnya pengaturan registry akan berubah, beberapa ditambah, dan beberapa dihapus sehingga beberapa aplikasi menjadi rusak. Contohnya adalah penggunaan berbagai versi dari ADO (ActiveX Data Object). Untuk menghindari ‘DLL Hell” aplikasi .NET akan mengetahui versi mana dari assembly yang harus dipakai sehingga aplikasi tersebut akan memakai versi yang tepat dari sejumlah versi yang sama dengan cara melakukan query ke metadata assembly.

Project Otak – http://otak.csharpindonesia.net

22

NET101 – Migrasi VB6 ke VB.NET

2.2 Bahasa Pemrograman Yang Mendukung Framework .NET Berikut adalah bahasa pemrograman yang mendukung Framework .NET: APL

Fortran

Pascal

C++

Haskell

Perl

C#

Java Language

Python

COBOL

Microsoft JScript®

RPG

Component Pascal

Mercury

Scheme

Curriculum

Mondrian

SmallTalk

Eiffel

Oberon

Standard ML

Forth

Oz

Microsoft Visual Basic®

Tabel 2.1 Daftar bahasa pemrograman yang mendukung Framework .NET Sumber: GotDotNet

2.3 Tujuan Desain Framework .NET Di bagian ini akan dibahas tujuan utama desain Framework .NET termasuk mendukung komponen, integrasi bahasa, interoperasi aplikasi melalui cyberspace, menyederhanakan development/pengembangan dan deployment/penyebaran, reliability yang lebih baik dan meningkatkan security.

2.3.1 Infrastruktur Komponen Komponen disini artinya adalah komponen COM (Component Object Model) untuk referensi ke suatu modul binary seperti DLL atau EXE. Teknologi COM memungkinkan programmer mengintegrasikan komponen binary ke dalam aplikasinya. Meskipun COM bagus, masalah detil pada COM membuat pengembang menjadi pusing. Ketika COM mengijinkan Anda untuk mengintegrasikan komponen binary yang dikembangkan oleh suatu bahasa, itu memerlukan Anda untuk mematuhi identitas COM, masa hidup dan aturan layout binary. Anda juga harus menulis kode plumbing (rumit) yang dibutuhkan untuk membuat suatu komponen COM seperti DllGetClassObject, CoRegisterObject dan lainnya. Pada .NET, semua class siap untuk digunakan pada level binary. Anda tidak perlu menulis kode plumbing ekstra untuk mendukung komponenisasi dalam Framework .NET. Anda hanya perlu menulis class .NET yang akan menjadi bagian dari assembly dan medukung plug and play. Untuk mempermudah pengembangan, Framework .NET menghilangkan kesulitan dalam mengembangkan komponen COM. Khususnya, .NET menghilangkan penggunaan registry untuk registrasi komponen dan dan mengeliminasi kebtuhan untuk menulis kode plumbing seperti pada komponen COM termasuk kode untuk mendukung unkown, factories class, masa hidup komponen, registrasi, dynamic binding dan sebagainya.

Project Otak – http://otak.csharpindonesia.net

23

NET101 – Migrasi VB6 ke VB.NET

2.4 Keuntungan yang didapatkan dari .NET Framework Secara garis besar, .NET Framework adalah environment runtime yang baru, dimana tujuan utamanya adalah untuk menyediakan mekanisme agar program lain dapat dieksekusi. Mekanisme ini dibangun dalam suatu framework, yang membuat proses pengembangan lebih sederhana dan platform secara keseluruhan lebih stabil dan aman. Beberapa keuntungan utama yang didapat adalah: •

Pengaturan Memory secara otomatis (sering juga disebut “garbage collection”) kebanyakan pembaca familiar dengan kerusakan memori, yang menjalankan proses dimana suatu aplikasi menggunakan system resource(typical memori)tetapi memori tersebut tidak dikembalikan/hilang pada saat suatu sistem telah selesai. Hal ini membuahkan hasil Oversight Error dalam pemrograman. Dalam .NET Framework hal ini telah dihindari, komponen dari .NET Framework bertugas untuk menyelidiki apakah system resource masih dibutuhkan dan akan segera dibebaskan apabila sudah tidak dibutuhkan dalam suatu aplikasi.



Code-level security: Selain menentukan aplikasi mana saja yang bisa dieksekusi di sistem, .Net Framework memungkinkan System Administrator untuk memberi akses pada level tertentu pada saat suatu aplikasi sedang dijalankan(contoh: pada waktu tertentu, akses diberikan oleh System Administrator untuk memperbolehkan aplikasi untuk ditulis oleh 1 user, di tempat lain dengan waktu yang bersamaan user lain hanya diberi akses read-only)



Pengaturan Standard version : Masalah paling umum pada Visual Basic 6 yang berjalan pada Platform Windows adalah “DLL hell”(DLL neraka ☺). Hal ini mengacu pada situasi dimana beberapa aplikasi diinstall pada satu komputer yang sama dan memerlukan versi yang DLL(Dynamic Link Libraries) yang berbeda-beda. Walaupun solusi parsial dari masalah ini telah diperkenalkan pada Windows 2000, tetap saja hal ini belum menjamin tidak terjadinya konflik pada skenario DLL. Pada aplikasi .NET, hal ini bisa dipecahkan. Aplikasi .NET dapat membedakan secara tepat versi pendukung yang dibutuhkan untuk menjalankan suatu program. Informasi ini disimpan pada Assembly , yang merupakan bagian instrinsik dari setiap aplikasi .NET.



Multiplatform support: pada .NET tidak lagi diperlukan untuk mengkompilasi versi-versi berbeda pada suatu aplikasi yang sama yang memiliki platform berbeda. Sebagai contoh, pada NT 4.0, versi berbeda dari suatu aplikasi yang sama akan diperlukan untuk Intel dan RISC platforms. Walaupun RISC sistem sudah tidak lagi digunakan(sejak dimulainya Windows 2000), anda akan memerlukan pendekatan yang sama apabilan berhadapan dengan aplikasi standart dari Windows yang dijalankan pada platform Win32 dan Win64(Itanium).Hal ini telah ditemukan solusinya dengan membagi kompilasi .NET ke 2 bagian.



Tidak ada lagi masalah untuk perbedaan kompatibilitas dan fungsionalitas antara bahasa pemrograman yang berbeda. Microsoft menemukan versi baru dari bahasa pemrograman (yang paling umum digunakan adalah Visual Basic.NET

Project Otak – http://otak.csharpindonesia.net

24

NET101 – Migrasi VB6 ke VB.NET

dan C#) yang digunakan untuk menciptakan aplikasi .NET. Hal ini bertujuan agar program dapat digabungkan dengan bahasa pemrograman berbeda yang dibuat oleh developer yang berbeda-beda, meningkatkan penggunaan kembali dari suatu piranti lunak dan mempercepat proses pengembangan. Hal terbesar yang mungkin menjadi keuntungan dari .NET framework adalah simplifikasi piranti lunak di dalam proses pengembangan(develop). Walaupun pada tahap ini bukan merupakan keuntungan yang “Wah!” dari sudut pandang sistem management, namum perlu diingat bahwa kebanyakan masalah pada saat pengembangan/sesudahnya disebabkan oleh piranti lunak yang didesain secara menyedihkan. Dengan disediakannya komponen bawaan(prepackaged components) yang mempunyai tugas untuk menangani tugas-tugas yang kritis, seperti keamanan piranti lunak dan pengaturan memori, aplikasi menjadi jauh lebih murah dan lebih stabil. Semua fitur yang dibahas sebagai benefit di atas mengarah pada arsitektur baru dimana suatu piranti lunak dioprasikan. Pada waktu-waktu sebelumnya, Windows program tradisional masih menggunakan kompilasi kode binari yang dieksekusi menggunakan fasilitas yang disediakan oleh Operating System. Dengan arsitektur baru pada aplikasi .NET, proses kompilasi dipecah menjadi 2 tahap, pertama program dikonversi terlebih dahulu ke IL(Intermediate Language) ,kemudian baru dikompilasi oleh kode binari yang telah disediakan pada mesin. IL adalah suatu platform dan independent pada bahasa pemrograman, yang menawakan 2 keuntungan utama: • Program yang sama dapat dieksekusi di lebih dari 1 platform(contoh: pada versi 32-bit dan 64-bit pada Windows 2003), tanpa perlu menciptakan 2 bersi binari yang berbeda untuk mendeploy. • Programmer dapat menulis coding dalam berbagai bahasa pemrograman yang disediakan .NET tanpa mengkhawatirkan kompatibilitas atau fungsionalitas yang berbeda karea IL code adalah independent dan digunakan pada saat pengembangan piranti lunak. IL code secara otomatis mengkompilasi ke ekivalen binari (yang merupakan tahap kedua dari kompilasi) hal ini terjadi setiap aplikasi dijalankan.Pada bagian proses kompilasi ini dibuat kode yang spesifik untuk platform pokok dari sistem operasi(OS), hal ini ditangani oleh Just-in-Time(JIT)compiler. Namun dalam beberapa kasus, hal ini dapat menyebabkan terjadinya hal-hal yang tidak diinginkan karena adanya implikasi dari performance. Dalam hal ini, kita bisa mengkompilasi aplikasi 1 kali, yaitu pada saat aplikasi diinstall ke suatu komputer yang dituju. Hasil dari kode binari dari proses kompilasi ini akan disimpan secara lokal dan tidak membutuhkan JIT Compiler/kompilasi JIT. JIT Compiler adalah subkomponen dari jantung framework yang biasa disebut sebagai Common Language Runtime(CLR).

Project Otak – http://otak.csharpindonesia.net

25

NET101 – Migrasi VB6 ke VB.NET

3. Perbedaan Visual Basic 6 dengan Visual Basic .NET Dirgahayu Tarigan

3.1 Pendahuluan Banyak perubahan yang dilakukan dalam Visual Studio .NET. Perubahan membuat penggunaan Visual Studio .NET untuk membangun aplikasi lebih mudah dengan dukungan fasilitas baru yang ditambahkan antara lain: Antar Muka yang terintegrasi (IDE), Microsoft® IntelliSense® , debugging yang lebih baik dan kemampuan dalam XML Web Services.

3.2 Antar Muka (IDE) Sebagai programmer Visual Basic 6.0 Anda tidak akan mengalami kesulitan untuk memahami antar muka Visual Basic .NET (Integrated Development Enviroment-IDE). Banyak hal dalam IDE Visual .NET berubah. Perubahan dilakukan agar produktifitas dan kenyamanan memprogram dapat dicapai. Visual Basic .NET editor merupakan bagian dari Visual Studio .NET. Selain Visual Basic .NET, Visual Studio .NET juga menyertakan C#, C++ dan J++ editor. Visual Studio.NET menyediakan antar muka (IDE) yang seragam untuk seluruh aplikasi bawaannya. Anda boleh saja seorang pemrogram Visual Basic, C# atau C++, tetapi saat memprogram Anda akan dihadapan dengan tampilan IDE yang sama. Hal ini memberikan kemudahan, karena dengan mengetahui salah satu bahasa Anda segera dapat beradaptasi dengan IDE editor saat berpindah ke bahasa yang lain. Karena perbedaan pengalaman dan kebiasaan, Visual Studio .NET mengijinkan mengubah profile sesuai dengan profile Anda. Perubahan dilakukan dari menu Help, Show Start Page atau klik tab MyProfile ditampilan awal Visual Studio.NET. Jika Anda seorang programmer Visual Basic ada dapat memilih Profile Visual Basic, dengan cara ini penggunaan Visual Basic .NET Anda akan mirip dengan penggunaan Visual Basic 6.0 termasuk shortcut dan pemetaan tombol keyboard.

Project Otak – http://otak.csharpindonesia.net

26

NET101 – Migrasi VB6 ke VB.NET

Gambar 3-1. Tampilan Start Page

3.2.1. Perubahan Tampilan dan Layout Dalam Visual Basic 6.0, standar tampilan IDE adalah layout MDI (Multiple Document Interface). Di Visual Studio .NET defaultnya IDE adalah layout Tabbed Document, yang menampilkan document Anda dalam bentuk tabbed seperti tampilan sheet di Microsoft Excel. Untuk mengubah ke Layout MDI klik menu Tools, Options. Dibawah ini ditampilkan beberapa Window yang tersedia dalam Visual Basic 6.0 dan persamaannya di Visual Basic .NET Visual Basic 6.0

Visual Basic .NET

Color Palette

Tidak ada persamaan.

Data View

Digantikan oleh Server Explorer

Form Layout

Tidak ada persamaan.

Immediate

Command Window

Project Explorer

Solution Explorer

Watches

Watch 1, Watch 2, Watch 3, Watch 4

Project Otak – http://otak.csharpindonesia.net

27

NET101 – Migrasi VB6 ke VB.NET

Main Menu Toolbar Toolbox

Windows Forms Designer

Properties Window

Gambar 3-2. Antar Muka (Integrated Development Eviroment)

3.2.2 Perubahan Menu Menu dalam Visual Studio .NET diseragamkan untuk semua bahasa pemrograman yang lain, karena hal ini, beberapa menu Visual Basic 6.0 diganti dengan menu baru di Visual Basic .NET. Saat membuka Visual Basic 6.0 semua menu ditampilkan, hanya menu akan berubah warna menjadi abu-abu jika menu tersebut tidak dapat dipergunakan. Di Visual Basic .NET, tidak semua menu ditampilkan. Menu hanya akan ditampilkan sesuai dengan keperluan. Contoh, Anda tidak membuka sebuah project, maka menu Debug tidak akan ditampilkan. Saat Anda membuka project maka menu Debug akan otomatis ditersedia.

Project Otak – http://otak.csharpindonesia.net

28

NET101 – Migrasi VB6 ke VB.NET

Berikut ditampilkan menu yang ada di Visual Basic 6.0 dan persamaanya di Visual Basic .NET. VISUAL BASIC 6.0 Add-Ins, Add-In Manager Debug, Add Watch Debug, Edit Watch Debug, Run To Cursor Debug, Set Next Statement Debug, Show Next Statement Debug, Toggle Breakpoint Edit, Complete Word Edit, Find Edit, Find Next Edit, Indent Edit, Insert File Edit, List Constants Edit, List Properties/Methods Edit, Outdent Edit, Parameter Info Edit, Quick Info Edit, Replace File, Make ProjectName File, Make Project Group File, Print Setup File, Recent files list File, Remove Project File, Save Project Group File, Save Project Group As File, Save Selection Format, Size to Grid Help, Microsoft on the Web Project, Add Class Module Project, Add Data Environment Project, Add Data Report Project, Add DHTML Page Project, Add File

Project, Add Form Project, Add MDI Form

VISUAL BASIC .NET Tools, Add-in Manager Add Watch (hanya context menu) Tidak ada persamaan. Run To Cursor (hanya context menu) Set Next Statement (hanya context menu) Show Next Statement (hanya context menu) Disable Breakpoint or Breakpoint (hanya context menu) Edit, Intellisense, Complete Word Edit, Find and Replace Edit, Find and Replace Edit, Advanced, Increase Line Indent Edit, Insert File As Text Edit, Intellisense, List Members Edit, Intellisense, List Members Edit, Advanced, Decrease Line Indent Edit, Intellisense, Parameter Info Edit, Intellisense, Quick Info Edit, Find and Replace Build, Build ProjectName Build, Build Solution File, Page Setup File, Recent Projects Edit, Remove File, Save SolutionName or File, Save All File, Save SolutionName As File, Save Selected Items Tidak ada persamaan. Ditangani oleh pilihan Snap to Grid. Help, Show Start Page Project, Add Class Tidak ada persamaan. Data Environment tidak didukung. Tidak ada persamaan. Data Reports tidak didukung. Tidak ada persamaan. DHTML Pages tidak didukung.. Project, Add New Item or Project, Add Existing Item Note Di Visual Basic 6.0 file disertakan ke dalam project. Di Visual Basic .NET copy dari file yang disertakan, file asli dicopykan kedalam folder project Visual Basic.NET. Project, Add Windows Form or Project, Add Inherited Form Project, Add Windows Form or Project, Add

Project Otak – http://otak.csharpindonesia.net

29

NET101 – Migrasi VB6 ke VB.NET

Project, Add Property Page Project, Add User Document Project, Add Web Class Project, Components Project, References Project, Remove item

Run, Break Run, End Run, Restart Run, Start Run, Start With Full Compile Tools, Add Procedure Tools, Menu Editor Tools, Procedure Attributes Tools, SourceSafe View, Call Stack View, Color Palette View, Data View Window View, Definition View, Form Layout Window View, Immediate Window View, Last Position View, Locals Window View, Object View, Object Browser View, Project Explorer View, Watch Window Window, Arrange Icons Window, Cascade Window, Tile Horizontally Window, Tile Vertically Window, Window list

Inherited Form Tidak ada persamaan. Property Pages tidak didukung.. Tidak ada persamaan. ActiveX Documents tidak didukung. Tidak ada persamaan. Web Classes tidak didukung. Tidak ada persamaan. Component ditangani dalam Toolbox. Tidak ada persamaan. References ditangani dalam Toolbox. Edit, Delete Note Remove, remove dalam Visual Basic 6.0 menghilangkan dalam tampilan project explorer tetapi file tidak dihapus.; Delete, delete di Visual Basic .NET menghilangkan dan menghapus file. Debug, Break All Debug, Stop Debugging Debug, Restart Debug, Start Debug, Start Without Debugging Tidak ada persamaan. Penambahan Procedure dilakukan dalam Code Editor. Tidak ada persamaan. Menu Editor digantikan oleh komponen MainMenu dan Context Menu. Tidak ada persamaan. File, Source Control Debug, Windows, Call Stack Tidak ada persamaan.Color Palette window tidak ada. Tidak ada persamaan. Data View window tidak ada. Go To Definition (hanya context menu) Tidak ada persamaan. Form Layout window tidak ada. Debug, Windows, Immediate Tidak ada persamaan. Gunakan Bookmarks. Debug, Windows, Locals View, Designer View, Other Windows, Object Browser View, Solution Explorer Debug, Windows, Watch Tidak ada persamaan. Hanya tersedia dalam model tampilan MDI. Hanya tersedia dalam model tampilan MDI. Hanya tersedia dalam model tampilan MDI. Windows...

Project Otak – http://otak.csharpindonesia.net

30

NET101 – Migrasi VB6 ke VB.NET

3.2.3 Penggunaan Keyboard Penggunaan keyboard di Visual Basic .NET distandarkan. Hal ini membuat penggunaan tombol yang Anda kenal selama ini menjadi berbeda atau tidak tersedia. Contohnya, di Visual Basic 6.0 penggunaan tombol F8 adalah Step Into saat mau dilakukan debug, di Visual Basic Studio .NET Step Into menjadi tombol F11. Jika ada tidak merasa nyaman dan sudah terbiasa dengan penggunaan keyboard seperti di Visual Basic 6.0 Anda dapat mengembalikan pemetaan keyboard Visual Basic .NET sesuai dengan yang Anda inginkan dengan memilih Keyboard Scheme di MyProfile. Untuk menampilkan MyProfile dari menu Help, Show Start Page. atau klik tab MyProfile ditampilan awal Visual Basic.NET .

3.3 Perubahan Project Secara umum project di Visual Basic .NET mirip dengan project Visual Basic 6.0, tetapi ada beberapa perbedaan yang perlu diperhatikan. Di Visual Basic 6.0 project berdasarkan referensi -- project menyimpan path (folder) setiap item yang ada di project. Sebagai contoh, saat menambah text file ke project, Visual Basic 6.0 akan menelusuri lokasi dari file dan menambahkan kedalam project. Saat project di compile, text file di load dari lokasi tersebut. Visual Basic .NET berdasarkan folder -- semua item project diletakkan dalam satu folder. File akan dicopy ke folder project jika item tersebut berada di folder yang terpisah. Folder tersebut mempunyai hirarki. Saat Anda membuat sebuah project, pertama sekali Anda akan diminta menentukan nama project dan folder tempat project. Di dalam folder tempat project tersebut akan dibuatkan folder baru yang diperlukan Visual Basic .NET biasanya adalah folder Bin dan Obj. Di Visual Basic 6.0 Anda dapat membuang form dari project dengan melakukan klik kanan dan pilih Remove dari window project exporer. Visul Basic 6.0 akan menghilangkan form tersebut dari tampilan project explorer (di Visual Basic .NET Project Explorer diganti dengan Solution Explorer) tetapi tidak dihapus filenya. Di Visual Basic .NET Remove digantikan oleh Delete, dimana file tersebut akan dihilangkan sekaligus menghapus file tersebut. Jika ingin dihilangkan dari tampilan saja tanpa dilakukan Delete, gunakan perintah Exclude From Project (Klik kanan pada file dan pilih Exclude From Project). Di Visual Basic 6.0 Anda dapat menggabungkan beberapa project, ini dikenal sebagai Group Project. Di Visual Basic .NET, Group Project dikenal dengan istilah Solution. Jika di Visual Basic 6.0 hanya bisa digabungkan project yang dibuat dengan bahasa Visual Basic, di Solutions bisa digabungkan beberapa project dari bahasa-bahasa yang lain di Visual Basic .NET seperti C#, C++, atau J++. Di Visual Basic 6.0 project file mempunyai extension (.vbp) dan Group Project (.vbg). File ini adalah text file yang dapat diedit langsung dari text editor. Di Visual Basic .NET, project dan solution dalam format XML dan sebaiknya tidak diedit secara langsung dengan program text editor.

Project Otak – http://otak.csharpindonesia.net

31

NET101 – Migrasi VB6 ke VB.NET

3.3.1 Perubahan Project Property dalam Visual Basic .NET Project Properties di Visual Basic 6.0 dan Visual Basic .NET menentukan setting keseluruhan project. Di Visual Basic 6.0, Project Properties ditentukan dalam kotak dialog Project Properties (klik kanan pada nama project di window project explorer dan pilih Project Properties). Di Visual Basic .NET, project properties ditentukan dalam kotak dialog Property Pages (klik kanan pada nama project dan pilih Properties). Banyak perbedaan project properties antara perbedaan project properties Visual Basic 6.0 dan Visual Basic .NET. Tabel berikut membandingkan project properties Visual Basic 6.0 dan Visual Basic .NET. VISUAL BASIC 6.0 Command Line Arguments Compile options Conditional Compilation Arguments DLL Base Address Help File Name Icon Project Description Project Help Context ID Project Name

VISUAL BASIC .NET Command line arguments (tergantung konfigurasi) Tidak ada persamaan. Conditional Compilation Constants — Custom Constants DLL base address Tidak ada persamaan. Application icon Tidak ada persamaan. Tidak ada persamaan. Tidak ada persamaan. Digantikan dengan Assembly name dan Root namespace. Project Type Output type Remote Server Tidak ada persamaan. Remove information about Tidak ada persamaan. Unused ActiveX Controls Require License Key Tidak ada persamaan. Retained In Memory Tidak ada persamaan. Property ini berhubungan dengan komponen MTS yang tidak didukung oleh Visual Basic .NET. Start Mode Tidak ada persamaan. Startup Object Startup object Threading Model Tidak ada persamaan. Visual Basic .NET mendukung multithreading. Title No equivalent. Version information for assemblies is stored in the AssemblyInfo.vb file. Unattended Execution Tidak ada persamaan. Upgrade ActiveX Controls Tidak ada persamaan. Use existing browser Tidak ada persamaan. Version Compatibility Tidak ada persamaan. Version Information Tidak ada persamaan. Version Number Tidak ada persamaan.. When this project starts Start Action

Project Otak – http://otak.csharpindonesia.net

32

NET101 – Migrasi VB6 ke VB.NET

3.3.2 Perubahan Template dalam Visual Basic .NET Pembuatan templete project (tipe project) di Visual Basic .NET berbeda dangan Visual Basic 6.0. Dalam beberapa kasus, templete project pada dasarnya sama hanya berbeda nama; sedangkan dalam kasus tertentu tidak dapat dicari kesamaan dengan tipe project yang ada dalam Visual Basic 6.0 Berikut tabel perbandingan tipe project antara Visual Basic 6.0 dan Visul Basic .NET

VISUAL BASIC 6.0 StAndard EXE ActiveX DLL ActiveX EXE ActiveX Control ActiveX Document DHTML Application IIS Application (Web Class)

VISUAL BASIC .NET Windows Application Class Library Class Library Windows Control Library Tidak ada persamaan. Visual Basic .NET bisa mengunakan ActiveX Documents. Tidak ada persamaan. Gunakan ASP.NET Web Application. Tidak ada persamaan.Gunakan ASP.NET Web Application.

3.3.3 Perubahan Reference dalam Visual Basic .NET Dalam Visual Basic 6.0, referensi ke library yang diinstall dalam komputer diatur dalam kotak dialog References (dari menu Project, pilih References). Saat Reference sudah ditambahkan Anda dapat mempergunakan dalam kode program. Dalam Visual Basic .NET, Reference dibuat pada assemblies dan bisa ditambah atau dibuang dengan memilih reference tersebut di window Solution Explorer. Visual Studio .NET mendukung project yang mempunyai referensi ke project yang lain serta referensi ke XML Web Service.

3.4 Perubahan Bahasa Visual Basic 6.0 dan versi yang dibawah didesain untuk membuat program berbasis Windows, Visual Basic .NET dirancang untuk membuat aplikasi XML Web Service. Untuk keperluan ini, Visual Basic .NET menghasilkan kode program yang dikenal secara umum saat dijalankan. Format file ini adalah XML. Aplikasi yang dibuat dengan Visual Studio .NET bisa berjalan seperti aplikasi yang ada di internet, tidak dibatasi oleh Sistem Operasi, protokol dan jaringan yang dipergunakan. Perubahan ini dibuat agar: Menyederhanakan bahasa dan membuatnya lebih konsisten. Membuat program mudah dibaca dan diperbaiki Membantu programmers menghindari kesalahan kode program. Membuat program lebih handal dan mudah dicari kesalahan kode program.

3.5 Ringkasan Perubahan Daftar berikut menampilkan perubahan bahasa, perintah yang tidak didukung dalam Visual Basic .NET termasuk perintah penggantinya.

Project Otak – http://otak.csharpindonesia.net

33

NET101 – Migrasi VB6 ke VB.NET

VISUAL BASIC6.0

PERSAMAAN DENGAN LOKASI NAMESPACE, CLASS, VISUAL BASIC .NET ATAU RUN-TIME LIBRARY

Abs function

Abs Method

System Namespace, Math Class AscB function Asc Function Visual Basic Run-Time Library Members, Strings module As Any keyword Tidak didukung dalam Visual phrase Basic .NET. Atn function Atan Method System Namespace, Math Class Calendar property CurrentCulture Property System.Globalization Namespace, CultureInfo Class ChDir statement ChDir Function Visual Basic Run-Time Library Members, FileSystem module ChDrive statement ChDrive Function Visual Basic Run-Time Library Members, FileSystem module Chr$, ChrB, Chr Function Visual Basic Run-Time Library functions Members, Strings module Close statement FileClose Function Visual Basic Run-Time Library Members, FileSystem module Cos function Cos Method System Namespace, Math Class Currency data type Decimal Data Type Visual Basic Run-Time Library Members, VariantType Enumeration CVDate function DateValue Function Visual Basic Run-Time Library Members, DateAndTime module CVError function Error Statement Date function, Now Property, Today Property Visual Basic Run-Time Library Date statement Members, DateAndTime module Date$ function DateString Property Visual Basic Run-Time Library Members, DateAndTime module Debug.Assert Assert, Fail methods System.Diagnostics method Namespace, Debug Class Debug.Print Write, WriteIf, WriteLine, and System.Diagnostics method WriteLineIf methods Namespace, Debug Class Deftype statements Tidak didukung dalam Visual Basic .NET. DeleteSetting DeleteSetting Function Visual Basic Run-Time Library statement Members, Interaction module DoEvents function DoEvents Method System.Windows.Forms Namespace, Application Class Empty keyword Nothing Does not apply Eqv operator = Operator Does not apply Exp function Exp Method System Namespace, Math

Project Otak – http://otak.csharpindonesia.net

34

NET101 – Migrasi VB6 ke VB.NET

Class Visual Basic Run-Time Library Members, FileSystem module Get statement FileGet Function Visual Basic Run-Time Library Members, FileSystem module GoSub statement Tidak didukung dalam Visual Basic .NET; gunakan Return Statement Initialize event Tidak didukung dalam Visual Basic .NET; use Sub New. Imp operator Tidak didukung dalam Visual Basic .NET. Input #, Input$ Input Function Visual Basic Run-Time Library statements, Members, FileSystem module Input$, InputB, InputB$ functions Instancing property Tidak didukung dalam Visual Does not apply Basic .NET. InStrB function InStr Function Visual Basic Run-Time Library Members, Strings module IsEmpty function IsNothing Function Visual Basic Run-Time Library Members, Information module IsMissing function Not supported in Visual Basic Does not apply .NET. IsNull function IsDbNull Function Visual Basic Run-Time Library Members, Information module IsObject function IsReference Function Visual Basic Run-Time Library Members, Information module Kill statement Kill Function Visual Basic Run-Time Library Members, FileSystem module LCase$ function LCase Function Visual Basic Run-Time Library Members, Strings module Left$, LeftB, Left Function Visual Basic Run-Time Library LeftB$ functions Members, Strings module LenB function Len Function Visual Basic Run-Time Library Members, Strings module Let, Set assignment Tidak didukung dalam Visual statements Basic .NET; perintah Set yang baru tidak berhubungan dengan salah satu dari perintah tersebut. Line Input # LineInput Function Visual Basic Run-Time Library statement Members, FileSystem module Lock statement Lock, Unlock Functions Visual Basic Run-Time Library Members, FileSystem module Log function Log Method System Namespace, Math Class LSet, RSet LSet Function, PadRight, Visual Basic Run-Time Library FileCopy statement

FileCopy Function

Project Otak – http://otak.csharpindonesia.net

35

NET101 – Migrasi VB6 ke VB.NET

statements

PadLeft;

LTrim$ function MidB function MidB statement MkDir statement Name statement Now function

Null keyword Oct$ function On ... GoSub construction On ... construction

GoTo

Open statement Option Base statement Option Private Module statement Print # statement Property Property Property statements Put statement Reset statement

Get, Let, Set

Members, Strings module and System Namespace, String Class LTrim Function Visual Basic Run-Time Library Members, Strings module Mid Function Visual Basic Run-Time Library Members, Strings module Mid Statement Visual Basic Run-Time Library Members, Strings module MkDir Function Visual Basic Run-Time Library Members, FileSystem module Rename Function Visual Basic Run-Time Library Members, FileSystem module Now Property Visual Basic Run-Time Library Members, DateAndTime module Nothing Does not apply Oct Function Visual Basic Run-Time Library Members, Conversion module Tidak didukung dalam Visual Basic .NET; gunakan perintah Select Case. Tidak didukung dalam Visual Basic .NET; gunakan perintah Select Case. FileOpen Function Visual Basic Run-Time Library Members, FileSystem module Tidak didukung dalam Visual Basic .NET. Tidak didukung dalam Visual Basic .NET.; gunakan perintah Module. Print, PrintLine Functions Visual Basic Run-Time Library Members, FileSystem module Tidak didukung dalam Visual Basic .NET

FilePut Function Reset Function

Right$, RightB Right Function functions RmDir statement RmDir Function Round function RSet,

Round Method LSet RSet Function;

Project Otak – http://otak.csharpindonesia.net

Visual Basic Run-Time Library Members, FileSystem module Visual Basic Run-Time Library Members, FileSystem module Visual Basic Run-Time Library Members, Strings module Visual Basic Run-Time Library Members, FileSystem module System Namespace, Math Class Visual Basic Run-Time Library

36

NET101 – Migrasi VB6 ke VB.NET

statements RTrim$ function

Members, Strings module Visual Basic Run-Time Library Members, Strings module SaveSetting SaveSetting Function Visual Basic Run-Time Library statement Members, Interaction module Scale method Tidak didukung dalam Visual Basic .NET Set, Let assignment Tidak didukung dalam Visual statements Basic .NET; perintah Set yang baru tidak berhubungan dengan salah satu dari perintah tersebut. SetAttr statement SetAttr Function Visual Basic Run-Time Library Members, FileSystem module Sgn function Sign Function System Namespace, Math Class Sin function Sin Method System Namespace, Math Class Sqr function Sqrt Function System Namespace, Math Class String function String Constructor; System Namespace, String Class String ($) functions Tidak didukung dalam Visual Basic .NET. Terminate event Tidak didukung dalam Visual Basic .NET; gunakan Sub Dispose dan Sub Finalize. Time function, TimeOfDay Property; see Visual Basic Run-Time Library Time statement DateTime Structure, Date Members, DateAndTime Data Type module Time$ function TimeString Property Visual Basic Run-Time Library Members, DateAndTime module Timer function Timer Property Visual Basic Run-Time Library Members, DateAndTime module Trim$ function LTrim, RTrim, and Trim Visual Basic Run-Time Library Functions Members, Strings module Type statement Tidak didukung dalam Visual Basic .NET; gunakan Structure Statement. UCase$ function UCase Function Visual Basic Run-Time Library Members, Strings module Unlock statement Lock, Unlock Functions Visual Basic Run-Time Library Members, FileSystem module Variant data type Object Data Type Wend keyword While...End While Statements and End Statement RTrim Function

Project Otak – http://otak.csharpindonesia.net

37

NET101 – Migrasi VB6 ke VB.NET

Width # statement

FileWidth Function

Write # statement

Write, WriteLine Functions

Project Otak – http://otak.csharpindonesia.net

Visual Basic Run-Time Library Members, FileSystem module Visual Basic Run-Time Library Members, FileSystem module

38

NET101 – Migrasi VB6 ke VB.NET

3.5.1 Array

Perubahan Batas Array Visual Basic .NET memperbaharui deklarasi batas array agar bisa bekerja sama dalam bahasa pemrograman yang lain didalam Visual Studio .NET. Visual Basic 6.0 Dalam Visual Basic 6.0, secara default batas bawah array adalah 0. Anda dapat mengubah batas bawah ini menjadi 1 dengan menambahkan peritah Option Base. Jika batas bawah default yang digunakan, banyak (count) elemen array sama dengan batas atas ditambah satu.

Visual Basic .NET Di Visual Basic .NET, batas bawah array adalah 0, dan tidak dapat diubah ke nilai yang lain. Perintah Option Base tidak didukung. Contoh, Dim Counters(14) as Integer Dim Sums(20) as Double

Contoh pertama adalah array dimensi satu dengan 15 elemen dengan nomer indeks dari 0 sampai 14. Contoh kedua membuat array dengan 21 elemen dengan indeks dari 0 sampai 20.

Perubahan deklarasi besar Array Visual Basic .NET memperbaharui deklarasi besar array agar bisa bekerja sama dengan bahasa pemrograman lain. Visual Basic 6.0 Anda mendeklarasi besar array dengan perintah Dim, seperti contoh berikut: Dim Month(0 To 11) as Integer

Array ini mempuyai ukuran array yang tetap, dan tidak dapat diubah dengan perintah ReDim Visual Basic .NET Di Visual Basic .NET, array tidak mempunyai ukuran tetap. Contoh sebelumnya bisa ditulis sebagai berikut: Dim Month(11) as Integer 'Mencadangkan 12 elemen --(0) sampai (11) Dim Month() as Integer= New Integer(11) {}

Kedua perintah diatas adalah sama. Semuanya mendefenisikan ukuran array yang dapat diubah dengan perintah ReDim. Untuk mengisi elemen array, perhatikan contoh berikut: Dim Month() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Project Otak – http://otak.csharpindonesia.net

39

NET101 – Migrasi VB6 ke VB.NET

3.5.2 Perubahan Perintah ReDim Jika di Visual Basic 6.0 Anda dapat mengubah dimensi array seperti contoh berikut: Dim X(10) As Single ReDim X(10, 10)

‘Array dimensi satu ‘Array dimensi dua

Di Visual Basic .NET perintah Redim tidak dapat digunakan untuk mengubah dimensi array. Jika perintah diatas Anda gunakan di Visual Basic .NET maka compiler akan memberikan Anda pesan kesalahan.

3.5.3 Perubahan Tipe Data Visual Basic .NET memperbaharui tipe data agar bisa bekerja sama dengan bahasa pemrograman lain dan common langguage runtime (CLR). Karena hal ini deklarasi tipe data, penggunaan dan konversi berubah. Berikut tabel perubahan tipe data.

BYTE

RANGE DATA

Boolean Byte Char Date

TIPE DATA .NET (CLR) System.Boolean System.Byte System.Char System.DateTime

2 bytes 1 byte 2 bytes 8 bytes

Decimal

System.Decimal

16 bytes

Double (doubleprecision floatingpoint) Integer Long (long integer) Object

System.Double

8 bytes

True atau False. 0 s.d. 255 0 s.d. 65535 0:00:00 1 Januari 0001 s.d 23:59:59 31 Desember 9999. 0 s.d +/79,228,162,514,264,337,593,543,950,335 tanpa desimal; 0 s.d. +/-7.9228162514264337593543950335 dengan 28 angka desimal -1.79769313486231570E+308 s.d -4.94065645841246544E-324 untuk nilai negatip; 4.94065645841246544E-324 s.d 1.79769313486231570E+308 untuk nilai positip.

System.Int32 System.Int64

4 bytes 8 bytes

-2,147,483,648 through 2,147,483,647. -9,223,372,036,854,775,808 9,223,372,036,854,775,807.

System.Object (class) System.Int16 System.Single

4 bytes

Setiap tipe yang dapat disimpan sebagai variabel Object. -32,768 s.d. 32,767. -3.4028235E+38 s.d. -1.401298E-45 untuk nilai negatip; 1.401298E-45 s.d. 3.4028235E+38 untuk nilai positip.

TIPE

Short Single (singleprecision floatingpoint)

2 bytes 4 bytes

Project Otak – http://otak.csharpindonesia.net

s.d.

40

NET101 – Migrasi VB6 ke VB.NET

String (variablelength) UserDefined Type (structure)

System.String (class)

Tergantung Platform.

(inherits from Tergantung System.ValueType Platform. )

0 s.d seAndar 2 billion. Range data ditentukan oleh tipe data structure tersebut dan tidak bergantung dengan range data member yang lain.

3.5.4 Function

Perubahan Format Function Function Format digunakan untuk mengubah tampilan data sesuai yang Anda inginkan. Hasil dari function Format adalah string. Misal Anda ingin mengubah tampilan tanggal, atau menampilkan angka dalam format currency. Function format di Visual Basic .NET diperbaharui untuk mengikuti spesifikasi Common Langguage Runtime untuk memformat data. Date/Time Format Dalam Visual Basic 6.0 untuk menampilkan short date Anda gunakan parameter format "ddddd", sedangkan long date digunakan parameter format "dddddd". Kedua parameter ini jika digunakan dalam Visual Basic .NET hanya akan menampilkan nama hari dan parameter tersebut tidak untuk menampilkan short date atau long date. Untuk menampilkan long date atau short date anda bisa menggunakan perintah: Format(Now(), "Long Date") Format(Now(), "Short Date")

‘long date ‘short date

DayOfWeek ("w") dan WeekOfYear ("ww") tidak didukung lagi, guanakan funtion DatePart seperti contoh dibawah : Format(Datepart(DateInterval.Weekday, Now)) Format(Datepart(DateInterval.WeekOfYear, Now))

Format Angka Dalam Visual Basic .NET, function format tidak mengkonversi secara langsung string ke angka, sehingga anda membutuhkan function tambahan untuk mengkonversi string tersebut lebih dahulu menjadi angka. Di Visual Basic 6.0, function Format bisa langsung mengkonversi string ke angka, sehingga tidak dibutuhkan function tambahan. Perhatikan contoh berikut, contoh pertama salah dan menampilkan "#.#", sedangkan contoh kedua hasilnya sesuai dengan yang diinginkan, menghasilkan karakter "1.234". CSng merupakan function untuk konversi object ke tipe data single. Format(123, "###.") Format(123, "###.#")

' Displays "123" ' Displays "123"

Format Karakter

Di Visual Basic 6.0, Anda dapat mempergunakan parameter @, &, , dan !. Di Visual Basic .NET parameter tersebut tidak ada artinya dan tidak didukung lagi.

Project Otak – http://otak.csharpindonesia.net

41

NET101 – Migrasi VB6 ke VB.NET

3.5.5 Procedure

Passing Parameter dalam Procedure Dalam Visual Basic 6.0 Anda tidak mendefenisikan secara langsung ByVal atau ByRef passing parameter argumen. Visual Basic 6.0 akan mengambil ByRef secara default. Jika Anda mendekalarasikan procedure di Visual Basic .NET, passing parameter defaultnya adalah ByVal untuk setiap argument. Dengan cara ini nilai awal (nilai aslinya) dari argumen yang dipassing bisa dilindungi dari perubahan yang tidak diinginkan oleh procedur atau program lain

Perubahan Parentheses dalam Procedure Visual Basic .NET mengharuskan adanya parentheses (tanda kurung buka dan tutup) disetiap procedure yang Anda ciptakan, walau procedure yang dibuat tidak mempunyai argumen. Dalam Visual Basic 6.0 parentheses tidak perlu ditambahkan jika procedure tersebut tidak mempunyai argumen.

3.5.6 Perubahan Debugger Saat program menjadi besar dan rumit, kemungkinan terjadi kesalahan sukar dihindari. Walupun diprogram secara hati-hati kesalahan yang tidak diharapkan bisa muncul, ini dinamakan bug. Menemukan dan menghilangkan bug dinamakan debugging. Program untuk debugging dinamakan debugger. Proses debugging aplikasi dalam Visual Basic .NET secara umum sama dengan Visual Basic 6.0, tetapi ada beberapa perbedan yang harus Anda perhatikan. Beberapa fasilitas yang baru dalam Visual Basic .NET mempermudah pencarian kesalahan dan evaluasi variable-variable yang digunakan saat run time. Dalam Visual Basic 6.0 Anda dapat mengubah kode program dalam modus break, dan melanjutkan debugging tanpa menghentikan dan menjalankan kembali program. Dalam Visual Basic .NET setiap perubahan kode program mengharuskan kode program dicompile ulang agar hasil dari perubahan kode program bisa diketahui. Karena hal ini, mengubah kode program dalam modus break dan melanjutkan kembali tidak didukung. Lebih lanjut tentang debugging Anda jumpai dalam Bab 6: Penanganan Error dan Debugging.

Dalam Visual .NET perubahan juga terjadi dalam Web, Data dan component. Pembahasan perubahan ini dan migrasi yang bisa dilakukan dapat Anda baca dalam seri buku terbitan Otak. Cek ke situs project otak: http://otak.csharpindonesia.net.

Project Otak – http://otak.csharpindonesia.net

42

NET101 – Migrasi VB6 ke VB.NET

4. Upgrade Aplikasi VB 6 ke VB.NET Risman Adnan

Tidak semua aplikasi yang anda buat di VB 6 perlu di upgrade ke VB.NET karena tidak semua aplikasi VB 6 akan menjadi lebih baik dengan fitur-fitur baru yang ada dalam VB.NET. Kadang-kadang tidak ada alasan cukup kuat untuk meng-upgrade aplikasi yang sudah dirancang dengan baik dan bekerja sesuai dengan yang diinginkan. Dengan kata lain, proses upgrade adalah suatu pilihan anda sesuai pertimbangan-pertimbangan tertentu. Jika anda akhirnya memutuskan untuk meng-upgrade aplikasi dengan alasan yang cukup kuat, anda akan tetap punya pilihan yaitu, melakukan upgrade secara parsial dan memanfaatkan COM interop atau upgrade keseluruhan. Bab ini akan membahas semua kemudahan yang ada untuk melakukan proses upgrade. ketika anda telah memutuskan untuk melakukannya.

4.1 Upgrade Wizard Apa yang terjadi ketika anda mencoba membuka file Visual Basic Project (*.vbp) dengan Visual Studio .NET? Anda akan melihat VB 6 Upgrade Wizard (diadopsi dari ArtinSoft, www.artinsoft.com) yang terdiri dari 5 langkah. Anda hanya perlu mengikuti langkahlangkah yang sudah ditetapkan oleh Wizard dan akan memperoleh laporan hasil upgrade.

Project Otak – http://otak.csharpindonesia.net

43

NET101 – Migrasi VB6 ke VB.NET

Gambar 4-1. Langkah Pertama dalam VB Upgrade Wizard

Gambar 4-2. Laporan Akhir VB 6 Upgrade Wizard dalam bentuk file HTML

Proses upgrade dari VB 6 ke VB.NET menggunakan Upgrade Wizard hanya merupakan operasi sederhana dan tidak bisa diharapkan mampu meng-upgrade aplikasi secara sempurna. Dua tipe proyek yang tidak dapat di support oleh Wizard adalah ActiveX dan halaman ActiveX DHTML. Anda harus melakukannya secara manual. Laporan Upgrade Wizard berisi masalah-masalah yang ditemui dalam kode program aplikasi selama proses upgrade. Laporan ini juga termasuk kode-kode program yang tidak berubah. Jika anda melihat ke halaman kode program, terlihat beberapa komentar dan dokumentasi terhadap perubahan yang dilakukan oleh Wizard. Kode yang sudah di upgrade melalui Upgrade Wizard masih memerlukan pemeriksaan yang teliti sebelum dapat dikompilasi kembali. Anda perlu membaca komentar-komentar yang ada dalam kode program dan menyesuaikannya dengan fitur-fitur yang ada di VB.NET baik dari segi bahasa maupun paradigma pemrograman. Upgrade Wizard hanya bisa digunakan untuk VB 6, walaupun seakan-akan format VB 5 dan VB 6 seperti identik, banyak hal yang berbeda terutama jika berhubungan dengan kontrol ActiveX. Trik terbaik untuk melakukan upgrade dari VB 5 adalah dengan mengubah dari VB 5 ke VB 6 dan dilanjutkan dengan Upgrade Wizard yang ada di Visual Studio .NET. Caranya mudah. Buka proyek VB 5 anda dengan Visual Basic 6 dan lakukan perbaikan-perbaikan yang diperlukan dari proses upgrade awal ini. Selanjutnya, buka proyek VB 6 anda dengan Visual Studio .NET. Selamat mencoba.

Project Otak – http://otak.csharpindonesia.net

44

NET101 – Migrasi VB6 ke VB.NET

4.2 Rekomendasi Sebelum Melakukan Upgrade Untuk aplikasi-aplikasi kecil yang sederhana proses upgrade mungkin dapat dilakukan dengan menggunakan Upgrade Wizard dan sedikit usaha untuk mengoreksi kode baris per baris. Bagaimana jika aplikasi tersebut sudah sangat kompleks? Proses upgrade akan sulit sekali dilakukan. Anda perlu perencanaan matang tentang ini. Jika anda adalah pengambil keputusan dalam satu organisasi, pertanyaan pertama yang dalam benak anda adalah keuntungan apa yang akan diperoleh oleh aplikasi tersebut sehingga perlu di upgrade ke VB.NET. Pertanyaan ini tidak dapat dijawab hanya dengan melihat fitur-fitur baru yang ditawarkan oleh .NET Framework, tapi perlu pengamatan lebih teliti terhadap kondisi aplikasi tersebut. Arsitektur aplikasi yang akan di upgrade akan sangat berpengaruh terhadap kemungkinan keberhasilan proses upgrade. Sebagian besar orang melakukan upgrade dengan tujuan: Menstandarisasi aplikasi Mendayagunakan fitur-fitur baru yang ada di .NET Framework Memperbaiki arsitektur aplikasi Meningkatkan performance dan skalabilitas Meningkatkan kualitas kode program Memaksimalkan produktivitas Akan tetapi, dalam beberapa kondisi perubahan dari ADO ke ADO.NET misalnya atau SOAP Toolkit ke Web Services tidak membawa keuntungan apa-apa. Banyak faktor lain yang tergantung pada kondisi aplikasi anda saat ini. Yang lebih menarik lagi, faktorfaktor tersebut tidak selalu bersifat teknikal. Mungkin sulit dipahami bahwa beberapa standar internasional seperti WITSML (www.witsml.org) tetap bertahan menggunakan SOAP Toolkit dan COM dengan alasan yang non teknis, tapi ini kenyataan yang terjadi. Berikut ini kita akan membahas beberapa hal yang direkomendasikan secara umum sebelum anda mengambil keputusan untuk melakukan parsial upgrade ataupun upgrade secara keseluruhan. Rekomendasi Untuk Aplikasi Web Jika aplikasi anda dibangun dengan web interface (ASP) dan secara terpisah telah menggunakan VB 6 COM atau VC++ 6 COM pada bagian business logic, anda tidak perlu melakukan upgrade di bagian web interface karena ASP tetap di support dalam VB.NET. Anda tetap bisa menggunakan ASP dan ASP.NET secara bersamaan dalam aplikasi anda. COM yang ada di business logic tidak perlu di upgrade kecuali ada bagian ASP.NET Code anda yang memerlukan .NET Assembly. Jika aplikasi anda menggunakan DHTML yang terkait dengan DLL, disarankan untuk tidak melakukan upgrade. Dokumen ActiveX tidak disupport oleh VB.NET. Disarankan untuk tidak meng-upgrade sebisa mungkin. Dokumen ActiveX ini tetap dapat digunakan dalam VB.NET. Contohnya, anda bisa membuat navigasi dari halaman VB.NET Web Form ke halaman DHTML dan sebaliknya.

Project Otak – http://otak.csharpindonesia.net

45

NET101 – Migrasi VB6 ke VB.NET

Webclass tidak ada lagi dalam VB.NET. Dengan sedikit modifikasi anda bisa mengupgrade Webclass ke ASP.NET. Tetapi perlu diingat bahwa Webclass tetap bisa digunakan di VB.NET Web Form dan ASP. Rekomendasi Untuk Aplikasi Client-Server Windows Form dalam VB.NET secara umum kompatibel dengan Form dalam VB 6. Ketika aplikasi anda di upgrade dengan Wizard, Form VB 6 akan diubah menjadi Windows Form VB.NET. Walaupun demikian, anda perlu memperhatikan perbedaan model obyek pada kontrol. Ada beberapa property yang tidak ada pada kontrol VB 6 sehingga anda perlu membersihkan kode anda. Jika aplikasi anda menggunakan banyak kontrol ActiveX atau dokumen ActiveX perlu di upgrade secara manual atau melalui COM Interop jika dimungkinkan. VB 6 menggunakan beberapa tipe data akses, ADO, RDO dan DAO yang tetap dapat digunakan dalam VB.NET melalui interop. Walaupun demikian, data binding dengan DAO dan RDO tidak di support dalam VB.NET. Anda perlu merubahnya ke ADO sebelum melakukan upgrade atau tidak melakukan upgade sama sekali. Dari penjelasan di atas kita bisa melihat bahwa komponen-komponen atau fitur-fitur berikut memerlukan proses upgrade secara manual: Dokumen ActiveX DHTML ActiveX Designer Data binding dengan DAO dan RDO Apakah ada hal lain? Sayang sekali, jawabannya ya. Masih ada beberapa hal yang perlu anda perhatikan secara seksama, seperti Property, Add-in Extensibility, User Control dan perbedaan bahasa. Hal-hal inilah yang menyebabkan proses upgrade tidak dapat dilakukan hanya dengan tool seperti Upgrade Wizard. Anda bisa mencari informasi lebih lanjut di MSDN (www.msdn.microsoft.com).

4.3 Upgrade Project Group Dalam VB 6 kita dapat membuat project group yang terdiri dari beberapa project. Ketika di kompilasi dengan tombol F5, semua project dalam group tersebut akan dikompilasi secara bersamaan dan debugger dapat bergerak dari kode pada satu project ke kode dalam project lainnya. Dalam VB .NET, project group ini dikenal dengan nama solution. Tiap solution terdiri dari satu atau lebih project. Seperti halnya di VB 6, anda dapat melakukan kompilasi di level solution dengan menekan tombol F5. Perbedaannya adalah solution dapat terdiri dari project yang bahasa programnya berbeda, C#, C++ atau VB.NET. Untuk meng-upgrade project group anda harus mengetahui dengan pasti susunan dan hubungan antar project dalam project group anda. Misalkan project group anda terdiri dari satu project EXE yang terkait dengan dua project DLL (A dan B). DLL A menggunakan beberapa routine dalam DLL B.

Project Otak – http://otak.csharpindonesia.net

46

NET101 – Migrasi VB6 ke VB.NET

Gambar 4-3. Struktur project Proses upgrade menggunakan Wizard untuk kondisi tersebut di atas dapat dilakukan satu-persatu secara “downstream” dengan urutan sebagai berikut: upgrade project EXE, upgrade project DLL A dan upgrade project DLL B.

4.4 Menggunakan VB Snippet Add-In Apa itu snippet? Mungkin anda sering menemukan istilah ini di internet atau buku-buku pemrograman. Snippet adalah suatu bagian dari kode program, bisa merupakan prosedur atau mungkin hanya beberapa baris kode. VB Snippet adalah bagian dari kode Visual Basic tentu saja. Misalnya jika anda menemukan contoh code di internet, atau dari mailing list. VB Snippet Add-in di rancang untuk membantu anda dalam meng-upgrade bagian kode anda. Untuk menggunakan VB Snippet Add-In, Anda harus membuka layar Code Editor di Visual Basic .NET. Pilih di menu Tools-VB Snippet ,maka akan terlihat seperti gambar di bawah

Project Otak – http://otak.csharpindonesia.net

47

NET101 – Migrasi VB6 ke VB.NET

Gambar 4-4. VB Snippet Upgrade Add-In

4.5 Metodologi Dalam Upgrade Wizard Hal – hal yang diupgrade oleh wizard adalah sebagai berikut: o Project VB 6 ke Type Project VB.NET o Form-Form VB 6 ke Windows Form .NET Framework o Kontrol-kontrol intrinsik ke Windows Form .NET Framework o Kontrol ActiveX dan object references o Beberapa language statement VB ke VB.NET(VB.NET Compatibility library) atau di .NET Framewor Upgrade Wizard tidak mensupport beberapa item berikut : o Project-project ActiveX EXE o Designer : as Add-In Designer, DHTML Page Designer, DataReport, and DataEnvironment o ActiveX controls yang umum, seperti: SSTab and UpDown o Aplikasi berbasis dokumen ActiveX o Aplikasi berbasis model Extensibility model–based applications o Kontrol OLE container o Drag and drop o Graphics statements and graphical controls o Dynamic Data Exchange(DDE)

Project Otak – http://otak.csharpindonesia.net

48

NET101 – Migrasi VB6 ke VB.NET

Visual Basic 6 Project Type Standard EXE ActiveX EXE ActiveX DLL ActiveX control WebClass-based project

Visual Basic .NET Project Type Windows application No equivalent (Choose between upgrade to a Windows application or a Class Library project.) Class Library Windows control library XML Web Forms

Figure 4-5. Table ekivalensi Project VB 6 ke Type Project VB.NET

Visual Basic 6 Control Class VB.CheckBox VB.ComboBox VB.CommandButton

VB.Data VB.DirListBox VB.DriveListBox VB.FileListBox

VB.Frame VB.HScrollBar

Visual Basic .NET Control Class System.Windows.- Forms.Checkbox System.Windows.- Forms.ComboBox System.Windows.- Forms.Button

No equivalent DirListBox in Microsoft.VisualBasic.Compatibility.VB6 DriveListBox in Microsoft.VisualBasic.Compatibility.VB6 FileListBox in Microsoft.VisualBasic.Compatibility.VB6

System.Windows.- Forms.GroupBox or System.Windows.Forms.- Panel System.Windows.- Forms.HScrollBar

VB.Image

System.Windows.- Forms.Picture

VB.Label

System.Windows.- Forms.Label

Project Otak – http://otak.csharpindonesia.net

Upgrade Notes

Because the Data control supports DAO data binding— which is not supported by Windows Forms—the control doesn’t upgrade. You can use the ADO data control in its place, update your code to use ADO data binding, and the ADO control will upgrade.

If the frame has a border, the control upgrades to a GroupBox; it upgrades to a Panel if there is no border. The Visual Basic 6 image control is a graphical control, which can be transparent. Windows Forms doesn’t support transparent controls, so transparency will be lost after upgrade. Visual Basic 6 labels are graphical and can be transparent. Visual Basic .NET labels have a window and

49

NET101 – Migrasi VB6 ke VB.NET

cannot be transparent. Transparency will be lost after upgrade.

VB.Line VB.ListBox

VB.OLE VB.OptionButton

No equivalent or System.Windows.Forms.Label System.Windows.- Forms.ListBox

No equivalent System.Windows.- Forms.OptionButton

VB.PictureBox

System.Windows.- Forms.PictureBox or System.Windows.- Forms.Panel

VB.Shape VB.TextBox

No equivalent System.Windows.- Forms.TextBox

VB.Timer VB.VScrollBar

System.Windows.- Forms.Timer System.Windows.- Forms.VScrollBar

For vertical and horizontal lines a label is used. The label is set to the width of the line. The back color of the label is set to the line color. Diagonal lines do not map. In some cases you can replace the control with the Microsoft Web Browser control and use the Navigate property. If the PictureBox has child controls, it upgrades to a Panel; otherwise, it upgrades to a PictureBox. Shape is a graphical control; Windows Forms doesn’t support graphical controls. You can use the .NET Framework graphics commands in place of the control. Setting the Interval property of a Visual Basic .NET timer to 0 will throw an exception. You need to set the Enabled property of a Timer to False to disable this behavior.

Figure 4-6. Tabel mapping antara kontrol-kontrol instrinsik Visual Basic 6 and .NET Windows Forms Controls

4.6 Kesimpulan Bab ini membahas dasar-dasar dari upgrade project, snippets, dan rekomendasi – rekomendasi yang dianjurkan penulis pada saat Anda ingin melakukan upgrade ke Visual Basic .NET. Melakukan adalah hal yang mudah , sekali Anda mengetahui bagaimana cara dan konsepnya.

Project Otak – http://otak.csharpindonesia.net

50

NET101 – Migrasi VB6 ke VB.NET

5. Melakukan Migrasi Aplikasi Sederhana Aryo Handono

Dengan munculnya Visual Studio .NET yang didalamnya juga terdapat paket VB.NET, maka muncul artikel – artikel yang mengangkat topik mengenai VB .NET dan versi sebelumnya yaitu VB6. Dari sekian banyak artikel, pembahasan yang sering muncul mengenai kompatibilitas serta perbedaan antara VB6 dan VB.NET . Memang dalam praktek di lapangan, VB6 masih mendominasi pilihan dalam membuat aplikasi selain dikarenakan mudah dan sangat membantu mempercepat proses development. Pada bab ini akan dibahas megenai migrasi VB6 ke VB .NET dan hal – hal yang perlu diperhatikan sebelum memutuska untuk migrasi penuh seluruh aplikasi disebabkan pada kenyataannya melakukan migrasi dari VB6 ke VB.NET tidaklah semudah membalikan telapak tangan. Ada beberapa hal dan persiapan yang harus dilakukan sebelum proses migrasi akan dilakukan.

5.1 Apakah Migrasi itu perlu Banyak suka dan duka yang sudah dialami oleh banyak programmer VB6, antara lain adalah kecepatan dalam pembuatan aplikasi, kemudahan dalam programming dan designing ( dengan sistem drag n drop). Namun tak dapat dipungkiri pula bahwa banyak progammer VB6 yang direpotkan oleh keterbatasan dari VB6 itu sendiri terutama dalam menggunakan Windows API. Dengan dikeluarkannya .NET Framework, maka penggunaan Windows API menjadi lebih dimudahkan untuk para pengguna VB .NET. Salah satu tujuan utama dari VB.NET adalah memudahkan kode – kode tersebut untuk saling bekerjasama dengan kode yang ditulis dalam bahasa lain, seperti C# ataupun C++. Maka dari itu VB6 harus dimigrasi ke VB .NET agar aplikasi menjadi lebih powerful, namun efek sampingnya adalah memutuskan kompatibilitas dengan versi yang sebelumnya yaitu VB6.

5.2 Yang Hilang di VB.NET Ada beberapa hal yang harus dipikirkan sebelum melakukan migrasi karena dengan migrasi selain aplikasi dapat menggunakan fasilitas dari .NET Framework tetapi aplikasi juga akan kehilangan beberapa fitur yang dahulu ada di VB6. Fitur – fitur yang hilang tersebut adalah : o o o o

OLE Container Control Dynamic Data Exchange DAO atau RDO data binding Visual Basic 5.0 control

Project Otak – http://otak.csharpindonesia.net

51

NET101 – Migrasi VB6 ke VB.NET

o o o

DHTML Application ActiveX Documents Property Pages

Masih banyak hal yang perlu dipertimbangkan sebelum aplikasi akan dimigrasi ke VB.NET, mungkin akan diperlukan tenaga ekstra setelah melakukan migrasi dikarenakan banyaknya perbedaan antara VB6 dan VB.NET. Salah cara yang paling mudah dalam membantu mengambil keputusan untuk migrasi adalah dengan menggunakan Upgrade Wizard dari Visual Studio .NET sendiri. Upgrade Wizard akan membuat copy dari project VB6 yang sudah dimigrasi, sementara project VB6 yang lama tidak akan diubah. Setelah proses migrasi selesai dilakukan, Upgrade Wizard akan membuat laporan mengenai isu – isu yang harus ditangani setelah proses migrasi yang akan membantu kita dalam mengambil keputusan apakah aplikasi tersebut lebih baik dimigrasi atau tetap menggunakan VB6.

5.3 Persiapan sebelum migrasi Hampir sepenuhnya proses migrasi dilakukan secara otomatis oleh Upgrade Wizard, namun masih ada beberapa hal yang dapat dilakukan agar proses migrasi menjadi lebih optimal. Yang harus diperhatikan adalah memastikan aplikasi VB6 bisa terkompilasi dan berjalan dengan baik, hal terbaik adalah dengan menginstal Visual Basic 6.0 pada komputer yang akan melakukan migrasi, selain untuk memastikan apakah aplikasi dapat berjalan dengan baik juga memastikan semua control – control dan type librarynya juga sudah ada pada PC tersebut sehingga proses migrasi dapat berjalan dengan lancar. Ingatlah bahwa Upgrade Wizard hanya dapat memproses Visual Basic 6.0 project , seandainya masih ada bagian dari aplikasi yang dibuat pada Visual Basic versi sebelumnya maka sebaiknya perlu dibuka pada aplikasi Visual Basic 6.0 dan disimpan ulang agar format file project tersebut menjadi format Visual Basic 6.0 Form pada VB.NET tidaklah jauh berbeda dengan form pada VB6 namun ada sedikit perbedaan yang harus dicermati antara lain: o Tidak ada Shape control pada VB.NET, semua shape control yang ada pada VB6 akan dimigrasi menjadi label control namun oval dan circle tidak dimigrasi. Penggunaan oval atau circle sebaiknya dihindari. o Tidak ada line control pada VB.NET, semua line control baik yang vertikal maupun horisontal, yang ada pada VB6 akan dimigrasi menjadi label control namun diagonal line tidak dimigrasi. Penggunaan diagonal line sebaiknya dihindari. o VB.NET sudah tidak mensupport OLE Container control, sehingga penggunaan control ini sebaiknya dihindari. o Pada timer control, nilai 0 pada properti Interval tidak akan men-disable timer tersebut, sehingga langkah terbaiknya adalah menggunakan properti Enable diset False untuk men-disable timer control tersebut. o VB.NET memiliki sejumlah perintah grafis baru pada GDI+ dan jauh berbeda, sehingga metode Circle, CLS, Pset, Line dan Point tidak dapat dimigrasi. o VB.NET tidak mensupport DDE dan metode Form.PrintForm

Project Otak – http://otak.csharpindonesia.net

52

NET101 – Migrasi VB6 ke VB.NET

o o o

Model programming fungsi drag-n-drop pada VB.NET berbeda dengan yang ada di VB6 sehingga properti dan metode drag-n-drop pada VB6 tidak bisa dimigrasi. VB.NET tidak mensupport properti Name pada Form dan control. VB.NET memiliki object Clipboard yang sudah diimprovisasi sehingga object Clipboard pada VB6 tidak dapat dimigrasi.

5.4 Contoh Migrasi dari VB6 ke VB.NET Untuk lebih jelasnya, akan dipraktekkan cara melakukan migrasi dari sebuah aplikasi sederhana di VB6 ke Vb.NET dengan menggunakan Upgrade Wizard. Sebagai contoh, aplikasi yang akan dimigrasi adala aplikasi yang menggunakan control MsFlexGrid, Button, Label dan Timer. Selain itu aplikasi ini juga menggunakan reference dari ADO 2.7.

Gambar5-1. Contoh Aplikasi Sedangkan untuk kode programnya adalah sebagai berikut : Private Sub btnFill_Click() Dim Conn As New ADODB.Connection Dim Rs As ADODB.Recordset Me.MousePointer = vbHourglass Conn.ConnectionString = "Provider=SQLOLEDB.1; " & _

Project Otak – http://otak.csharpindonesia.net

53

NET101 – Migrasi VB6 ke VB.NET

"Data Source=(local);" & _ "Initial Catalog=Northwind;Integrated Security=SSPI" Conn.Open Set Rs = Conn.Execute("SELECT TOP 10 * From Customers") Do While Rs.EOF True MsGrid.AddItem (Rs("CustomerID") & vbTab Rs("ContactName")) Rs.MoveNext Loop Me.MousePointer = vbDefault End Sub

&

Private Sub Form_Resize() MsGrid.Width = Me.Width - 120 MsGrid.Height = Me.Height - 120 End Sub Private Sub tmrTick_Timer() Me.lblCurrentTime.Caption = Format(Now(), "HH:mm:ss") End Sub

Gambar 5-2.Tampilan Code Kemudian setelah semuanya berhasil di kompilasi, maka hasil dari program yang dirunning akan tampak seperti gambar dibawah, dimana program tersebut akan mengambil 10 Nama Customer beserta ID nya dari database NorthWind ketika tombol ditekan, sementara itu juga pada saat yang sama control Timer akan mengupdate label dengan nilai jam dan tanggal sistem pada saat itu.

Project Otak – http://otak.csharpindonesia.net

54

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-3. hasil Running Setelah aplikasi bisa berjalan, tahap akan dilanjutkan dengan memigrasikan program VB6 tadi ke VB.NET. Sebelumnya Project disimpan dahulu pada folder tertentu misalnya D:\VBtoNET folder.

Gambar 5-4. Convert Menu Menu Upgrade Wizard Vb6 ke VB.NET dapat diakses melalui Menu File – Open – Convert. Setelah itu akan muncul sebuah dialog dengan beberapa pilihan untuk melakukan migrasi, untuk melakukan migrasi dari VB6 ke VB.NET maka harus dipilih adalah Visual Basic.NET Upgrade Wizard.

Project Otak – http://otak.csharpindonesia.net

55

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-5.Convert Dialog Setelah itu, muncul dialog yang meminta lokasi dari project VB6 tersebut, sebagai contoh, lokasi dari project VB6 contoh diatas berada di folder

D:\VBtoNET\VBtoNET.vbp .

Project Otak – http://otak.csharpindonesia.net

56

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-6. Upgrade Wizard Dialog Setelah itu, dialog akan meminta lokasi dimana file Project VB.NET akan disimpan, hal yang perlu diperhatian bahwa Upgrade Wizard ini tidak mengubah sama sekali file project VB6 melainkan akan membuat duplikatnya pada lokasi yang berbeda. Hal ini memudahkan seandainya setelah dimigrasi ternyata pilihan yang terbaik adalah tetap menggunakan VB6, maka hanya perlu menghapus folder project VB.NET dan file project VB6 masih tetap bisa dipergunakan. Berikut adalah tampilan setelah file project VB6 berhasil dimigrasi dan file project VB.NET yang baru dibuka pada IDE Visual Studio .NET 2003.

Project Otak – http://otak.csharpindonesia.net

57

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-7. Hasil Upgrade Wizard Tampak dari segi desain tampilan aplikasi tidak banyak jauh berbeda dengan tampilan desain di VB6 dahulu, namun ada beberapa hal baru antara lain adalah control Timer tidak lagi ditampilkan pada form desain, melainkan pada bagian bawah IDE.

Project Otak – http://otak.csharpindonesia.net

58

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-8.Code Hasil Upgrade Pada bagian Private Sub btnFill_Click dan Private Sub tmrTick_Tick tidak banyak perubahan, namun pada bagian Private Sub frmMain_Resize ada tambahan warning dan untuk detilnya bisa dilihat pada website MSDN. Untuk sementara, warning ini diabaikan terlebih dahulu dan aplikasi dicoba untuk dijalankan dengan menekan tombol F5.

Project Otak – http://otak.csharpindonesia.net

59

NET101 – Migrasi VB6 ke VB.NET

Gambar 5-9.Running Aplikasi hasil wizard

Project Otak – http://otak.csharpindonesia.net

60

NET101 – Migrasi VB6 ke VB.NET

6. Masalah Pada Proses Upgrade Kiki Rizki Noviandi

Pada Bab ini akan dibahas tentang masalah yang sering terjadi ketika kita melakukan migrasi dan upgrade dari VB 6.0 ke VB.NET dan bagaimana cara penanganannya, Bisanya masalah ini timbul karena perbedaan dalam hal bahasa dan windows control baru serta dalam hal proses run-time dari .NET FrameWork sendiri.

6.1 Default Properties Pada Visual basic .NET Default property sudah tidak di support lagi oleh CLR, jika kita menggunakan upgrade wizard maka wizard akan memberikan warning terhadap code yang menggunakan default property ini. Pada Code dibawah ini akan ditunjukkan perbedaan hasil upgrade ketika default property di akses baik dengan metoda late-bound atau early-bound object. Contoh code VB 6.0 yang akan kita migrasi menggunakan Upgrade wizards dimana didalamnya terdapat default property. Private Sub CopyButton_Click() EarlyBoundCopy Text1, Text2 LateBoundCopy Text1, Text3 End Sub ' This method's parameters are explicitly defined as TextBoxes Private Sub EarlyBoundCopy(sourceCtrl As TextBox, destCtrl TextBox) destCtrl.Text = sourceCtrl End Sub

As

' This method's parameters are variants (the default type) Private Sub LateBoundCopy(sourceCtrl, destCtrl) destCtrl.Text = sourceCtrl End Sub

Code diatas dapat jalan pada VB 6.0, namun setelah diupgrade dengan upgrade wizards maka akan keluar warning yang berisi informasi bahwa code yang di upgrade akan error ketika di compile setelah proses upgrade wizards. Sebagai hasilnya methode lateboundcopy akan menghasilkan InvalidCastException. Berikut Code Hasil Generate upgrade Wizard. Private Sub CopyButton_Click(ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) Handles CopyButton.Click

Project Otak – http://otak.csharpindonesia.net

61

NET101 – Migrasi VB6 ke VB.NET

EarlyBoundCopy(Text1, Text2) LateBoundCopy(Text1, Text3) End Sub ' This method's parameters are explicitly defined as TextBoxes Private Sub EarlyBoundCopy(ByRef sourceCtrl As _ System.Windows.Forms.TextBox, ByRef destCtrl As _ System.Windows.Forms.TextBox) destCtrl.Text = sourceCtrl.Text End Sub ' This method's parameters are variants (the default type) Private Sub LateBoundCopy(ByRef sourceCtrl As Object, _ ByRef destCtrl As Object) 'UPGRADE_WARNING: Couldn't resolve default property of object 'destCtrl.Text. 'UPGRADE_WARNING: Couldn't resolve default property of object 'sourceCtrl. destCtrl.Text = sourceCtrl End Sub

Dari warning pada code diatas maka code tersebut perlu diperbaiki dengan cara sebagai berikut : Rubah variable definition pada Visual basic 6.0 project menjadi variable strong typed dan jalankan upgrade wizard kembali. Cara lainnya adalah dengan cara menentukan secara explisit property yang diinginkan pada VB .NET. seperti perubahan pada contoh code berikut ini : Private Sub LateBoundCopy(ByRef sourceCtrl As Object, _ ByRef destCtrl As Object) destCtrl.Text = sourceCtrl.Text End Sub Pada kenyataanya proses upgrade sebuah aplikasi yang memiliki masalah dalam hal run time seperti ini dapat kita atasi dengan dua cara penyelesaian. Pertama, kita perlu perhatikan benar setiap issue yang dikeluarkan sebagai catatan dari proses migrasi menggunakan upgrade wizard. Yang kedua, kita harus melakukan test secara menyeluruh terhadap aplikasi yang dimigrasi dengan menggunakan upgrade wizard dengan memastikan bahwa seluruh fungsi yang ada berjalan dengan baik.

6.2 AddItem dan ToString menggunakan COM Objects Pada VB 6.0, AddItem method digunakan untuk menambahkan data pada sebuah List box atau Combo Box. Pada VB .Net method ini diganti dengan Add Method untuk menambahkan data item pada sebuah item collection pada ListBox atau ComboBox di Windows Forms. Add Method pada VB .NET mempunyai parameter berupa object dan bukanlah string seperti pada VB 6.0, dan untuk mengambil nilai String dari item collectionnya bisa dilakukan dengan memanggil method ToString. Pada contoh dibawah ini bisa dilihat code untuk menambahkan nilai sebuah TextBox kedalam sebuah ListBox sebagai berikut,: Option Explicit

Project Otak – http://otak.csharpindonesia.net

62

NET101 – Migrasi VB6 ke VB.NET

' Button Click Event Handler Private Sub AddButton_Click() AddText Text1 End Sub ' Adding the control to the ListBox Private Sub AddText(text) ' We are relying on the default property here List1.AddItem text End Sub

Permasalahan yang terjadi pada code diatas adalah pada textboxnya menggunakan default property ketika terjadi proses late-bound. Ketika sebuah textbox digunakan VB akan menganggap data yang diambil adalah data dari default property yang ada dari COM Type object library . pada kasus ini text yang ada pada textbox object dianggap sebagai default property. Sehingga hasil dari code dibawah ini akan dianggap sama. List1.AddItem Text1 List1.AddItem Text1.Text

Seperti sudah dijelaskan bahwa penggunaan variant untuk menghandle textbox object pada addtext method akan mengakibatkan terjadi masalah dalam proses migrasi dengan menggunakan upgrade wizard. Seperti pada code hasil upgrade dibawah ini : ' Button Click Event Handler Private Sub AddButton_Click(ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) Handles AddButton.Click AddText(Text1) End Sub ' Adding the control to the ListBox 'UPGRADE_NOTE: Text was upgraded to text_Renamed. Private Sub AddText(ByRef text_Renamed As Object) ' We are relying on the default property here 'UPGRADE_WARNING: Couldn't resolve default property of 'object text_Renamed. List1.Items.Add(text_Renamed) End Sub

Dari hasil code diatas yang akan kita dapatkan bukalah pesan kesalahan, tetapi adalah return value berupa object name space dan valuenya seperti berikut ini. misalkan jika textboxnya berisi “Hello World,” maka to string method akan memberikan nilai “System.Windows.Forms.TextBox, Text: Hello World.” Untuk mengatasi masalah ini maka kita perlu memodifikasi code kita pada saat melakukan item add ke ListBox dengan code sebagai berikut : ' This explicitly passes the contents of the Text property to the ' ListBox Add method. List1.Items.Add(text_Renamed.Text)

Project Otak – http://otak.csharpindonesia.net

63

NET101 – Migrasi VB6 ke VB.NET

6.5. Deterministic Finalization dengan Garbage Collection Garbage collection adalah sebuah konsep baru pada windows platform development, dimana dengan konsep ini kita dapat dengan mudah melakukan management memory untuk COM component. Salah satu keuntungan Garbage Collection adalah ketika COM Object sudah tidak digunakan dan di reference lagi maka object akan di destroy secara otomatis. Pada VB 6.0, dalam menggunakan COM object untuk mengetahui jumlah aktif reverence yang ada dan menentukan lifetime dari sebuah object yang direference digunakan sebuah reference counting. Ketika sebuah object di instansiasi maka reference count akan bertambah jumlahnya. ketika nilai dari reference count mencapai nol maka object akan di destroy. Namun reference counting ini memiliki beberapa kendala dalam penanganan COM object karena memiliki kegagalan dalam mengatasi Circular references. Meski demikian reference counting memiliki kemampuan untuk dapat memudahkan dalam penentukan kapan dan dimana sebuah object akan di destroy. Pada visual basic 6.0 pemrograman COM sangatlah sederhana sebab memiliki Implementasi COM secara detail. Pada code dibawah ini dapat dilihat bagaimana reference counting menentukan object life time : Dim Set Set Set Set

x x y x y

As Connection, y As Connection = new Connection 'Create an object and set refcount = 1 = x 'set refcount = 2 = Nothing 'set refcount = 1 = Nothing 'set refcount = 0; and destroy the object

Kita tidak perlu melakukan dereference terhadap sebuah object di VB 6.0, sebab jika sebuah variable object out of scope maka VB 6.0 secara otomatis akan melakukan dereverences seperti tampak pada code berikut ini : Sub MySub() Dim x As Connection, y As Connection Set x = New Connection 'Create an object and set refcount = 1 Set y = x 'set refcount = 2 End Sub

Pada Visual Basic .NET, sangatlah berbeda dalam penanganan COM object dibandingkan VB 6.0, sebab VB .NET tidak menggunakan Reference counting untuk menentukan lifetime dari sebuah object. Melainkan VB .NET menggunakan Garbage Collection untuk menangani memory management, sebagai contoh pada VB .NET setting sebuah object reference menjadi Nothing tidak secara otomatis men-distroy object tersebut. Melainkan Garbage collection yang menjamin bahwa object tersebut akan di destroy pada saat tertentu. Hasil dari perubahan ini dapat dilihat pada contoh code Visual Basic .NET berikut ini : Dim conn As New ADODB.Connection conn.Open( ... ) Dim rs = conn.Execute( ... ) conn = Nothing ' The object is not destroyed here and the ' connection is still open

Project Otak – http://otak.csharpindonesia.net

64

NET101 – Migrasi VB6 ke VB.NET

Sebagai contoh pada Visual basic 6.0 biasanya jarang melakukan pengisian Nothing pada setting connection reference untuk kemudian melakukan distroy connection object. Di Visual basic .NET setting connection menjadi Nothing merupakan proses penandaan object tersebut kedalam collection. Perlu di catat bahwa jika connection pada sebuah database atau penggunaan sebuah object yang memerlukan Physical resource dan kita reference object itu tanpa melakukan proses destroy maka akan membebani memory atau pun network resource. Berikut cara penandaan sebuah object kedalam sebuah garbage collection: Dim conn As New ADODB.Connection conn.Open( ... ) Dim rs = conn.Execute( ... ) conn.Close() conn = Nothing

proses pengosongan reference di garbage collection dilakukan dengan cara bila reference itu sudah out of scope ataupun menjalankan code berikut yang memastikan bahwa reference dari COM sudah di destroy sebelum aplikasi selesai seperti berikut ini GC.Collect() GC.WaitForPendingFinalizers()

Collect method diatas merupakan asynchronous call (free threading), yang berarti bahwa aplikasi tidak akan menunggu sampai collection lengkap sebelum melanjutkan intruksi selanjutnya. Pemanggilan WaitForPendingFinalizers berfungsi untuk melakukan bloking aplikasi sampai collection telah lengkap.

6.4 Dim…As New Pada Visual Basic .NET ada beberapa perubahan yang cukup signifikan dalam hal teknik pemrograman seperti halnya dalam melakukan declarasi variable dan array menggunakan New statement, hal ini terjadi kerena .NET sudah tidak mensupport implissit declaration. Pada contoh berikut dapat dilihat bagaimana upgrade wizard menangani type deklarasi variable tersebut ini : Berikut cara deklarasi pada vb 6 : Dim x As New Class1 Dim y(5) As New Class2

Setelah dijalankan upgrade wizard akan didapatkan hasil sebagai berikut : Dim x As New Class1() 'UPGRADE_WARNING: Arrays can't be declared with New. Dim y(5) As New Class2()

Pesan UPGRADE_WARNING ini menunjukkan bagaimana .NET sudah tidak mensupport implisit declaration variable sehingga jika program tersebut tetap dijalankan

Project Otak – http://otak.csharpindonesia.net

65

NET101 – Migrasi VB6 ke VB.NET

maka akan muncul pesan kesalahan yang disebabkan oleh perintah as new untuk array sudah tidak bisa dilakukan di VB .NET. Untuk menangani masalah ini maka yang perludilakukan adalah : merubah cara instansiasi array dengan melakukannya dalam sebuah Loop. Sepertti tampak pada code berikut ini : Dim y(5) As Class2 For i = 0 To 5 y(i) = New Class2() Next

Solusi diatas tidak menunjukkan bentuk lain dari proses implisit instasiation. Sebagai contoh pada kode dibawah ini jika dijalankan akan mengeluarkan pesan kesalahan berupa NullReferenceException. Dim x As New Object1() x.AnyMethod() x = Nothing x.AnyMethod() ' This will cause a NullReferenceException

Proses upgrade wizard akan memberikan kemudahan pada proses upgrade dengan cara melakukan isolasi pada masalah yang di temukan dengan cara melakukan insert WARNING pada bagian dimana kita mendeklarasikan sebuah Array as new. Selain itu upgrade wizard pun akan mengenerate warning yang lain jika kita melakukan pengisian nothing pada sebuah object. Dengan warning ini kita bisa melakukan tracking terhadap setiap code yang ada dn dapat dengan segera melakukan perubahan yang perlu dilakukan. Untuk mengatasi masalah dalam melakukan create sebuaah instant dari Object1 atau untuk melakukan testing terhadap nilai Nothing pada sebuah variable yang mungkin sedah diset nothing dapat dilakukan dengan cara sebagai berikut ini. Dim x As New Object1() x.AnyMethod() x = Nothing x = New Object1() x.AnyMethod()

As new pada contoh diatas merupakan salah satu contoh yang cukup signifikan dalam perubahan functionality yang dimili oleh Visual basic 6 dengan Visual Basic .NET. Ini sedikitnya merupakan issue yang perlu diperhatikan ketika kita akan melakukan Upgrade terhadap aplikasi yang sangat bergantung dengan aplikasi yang dibangun menggunakan teknologi Visual basic 6.

6.5 Sub Main (or Default Form) Perbedaan yang cukup signifikan antara Vb .Net dengan Vb 6 terdapat pula dalam hal application Life Time. Khususnya ketika startup object selesai dijalankan dan ketika application end.

Project Otak – http://otak.csharpindonesia.net

66

NET101 – Migrasi VB6 ke VB.NET

Pada Visual basic 6 aplikasi akan tetap aktif jika masih terdapat windows atau dialog box yang terbuka. Berbeda dengan Visual basic .NET yang menjalankan aplikasi pada sebuah main form yang dijalankan pada sebuah main thread sehingga ketika main formnya terminate maka aplikasi secara default akan berakhir. Dua skenario utama dalam melakukan proses startup pada aplikasi visual basic. Yang pertama adalah jika startup objectnya merupakan sebuah Form, dan yang kedua adalah jika startup objectnya adalah sebuah startup method. Sub Main sendiri secara khusus digunakan dalam dua kondisi yaitu : Jika kita ingin melakukan Customize loading process. Jika kita menggunakan application wizard untuk membuat aplikasi yang diinginkan. Secara umum ketika kita membuka sebuah form dari sub main dapat menggunakan System.Windows.Forms.Application.Run untuk menjalankan aplikasi kita. Method ini dimulai dengan menjalankan sebuah windows application massaging loop pada sebuah thread yang aktif dan membuat form yang bersangkutan menjadi visible. Jika kita menginginkan form lain yang menggantikan form yang tadi sebagai sebuah startup maka kita harus membuatnya dalam sebuah thread yang terpisah. Agar aplikasi yang kita buat tidak terminate secara prematur. Dengan demikian jika form yang bersangkutan di close maka aplikasi juga akan di segera ditermedate. Contoh code untuk menggunakan perintah Application.Run method pada sebuah function main. ' This is how to start your application from Sub Main System.Windows.Forms.Application.Run(New Form1())

6.6 Bad Constants Pada visual basic 6, kita dapat membuat suatu konstanta yang dikenal sebagai enumeration. Setiap nilai dari enumeration ini memiliki tipe Integer dan setiap nilainya akan di map kedalam suatu nilai integer. Visual Basic .NET lebih ketat dalam penentukan nilai enumerasi, ini disebabkan karena enumerasi memiliki actual value dan bukan hanya kumpulan data integer yang memiliki friendly name seperti pada visual basic 6. Hal ini lebih dikenal sebagai Bad Constant. Sebagai contoh untuk kasus ini dapat dilihat pada penggunaan property Screen.MousePointer. Konstanta seperti vbNormal sering digunakan dari pada vbDefault yang merupakan nilai constant untuk Property MousePounter. Pada Contoh berikut ini akan di tunjukkan code yang berhubungan dengan Bad Constant. Dimana code di bawah akan bekerja secara normal pada Visual Basic .NET. ' Correct MousePointer constant Screen.MousePointer = vbDefault ' Incorrect constant, same underlying value Screen.MousePointer = vbNormal

Project Otak – http://otak.csharpindonesia.net

67

NET101 – Migrasi VB6 ke VB.NET

' The same underlying value Screen.MousePointer = 0

Namun ketika kita melakukan proses upgrade menggunakan upgrade wizard maka kita akan mendapatkan message yang tampak pada code berikut ini : ' Correct MousePointer constant 'UPGRADE_WARNING: VB.Screen property Screen.MousePointer has a 'new behavior. System.Windows.Forms.Cursor.Current = _ System.Windows.Forms.Cursors.Default ' Incorrect constant, same underlying value 'UPGRADE_ISSUE: Unable to determine which constant to upgrade 'vbNormal to. 'UPGRADE_ISSUE: VB.Screen property Screen.MousePointer does not 'support custom mousepointers. 'UPGRADE_WARNING: VB.Screen property Screen.MousePointer has a 'new behavior. System.Windows.Forms.Cursor.Current = vbNormal ' The same underlying value 'UPGRADE_WARNING: VB.Screen property Screen.MousePointer has a 'new behavior. System.Windows.Forms.Cursor.Current = _ System.Windows.Forms.Cursors.Default

Dari pesan error diatas dapat dilihat bahwa vbnormal constant tidak dapat diupgrade karena MousePointer Value harus diisi oleh nilai yang sesuai dengan nilai enumerasi yang diijinkan untuk Mouse poiter property yaitu Default. Upgrade wizard tidak secara langsung melakukan perbaikan atas kesalahan proses upgrade ini, namun kita akan cukup terbantu dengan adanya IntelliSense yang membantu kita dalam memperbaiki kesalahan ini.

6.7 Drag and Drop Drag and Drop merupakan fungsi yang utama dalam sebuah aplikasi modern. Ada beberapa hal penting yang perlu diperhatikan dalam melakukan proses migrasi untuk aplikasi dengan Drag and Drop ini. Karena dalam melakukan proses drag and drop di Visual basic 6 berbeda dengan visual studio .NET sehingga kita pelu memahami perubahan apa saja yang perlu dilakukan dan akibat dari perubahan tersebut. Drag and Drop pada Visual Basic 6 Visual basic 6 men-support dua jenis drag and drop operation., yaitu standard drag and drop yang men-support drag and drop proses antara form dalam sebuah windows form, serta OLE drag and drop yang di disain untuk men-support darg and drop antara aplikasi. Pada tabel berikut ini dapat dilihat bagaimana control standar Visual basic 6 hubungannya dengan support terhadap manual atau automatic operasi drag and drop.

Project Otak – http://otak.csharpindonesia.net

68

NET101 – Migrasi VB6 ke VB.NET

Table : Visual Basic 6 Controls dikelompokkkan berdasarkan supportnya terhadap OLE Drag and Drop Controls OLEDragMode OLEDropMode vbNone, TextBox, PictureBox, Image, RichTextBox, VbManual, vbManual, MaskedBox vbAutomatic vbAutomatic ComboBox, ListBox, DirListBox, FileListBox, VbManual, vbNone, DBCombo, DBList, TreeView, ListView, vbAutomatic vbManual ImageCombo, DataList, DataCombo Form, Label, Frame, CommandButton, DriveListBox, Data, MSFlexGrid, SSTab, TabStrip, Toolbar, vbNone, Not supported StatusBar, ProgressBar, Slider, Animation, UpDown, vbManual MonthView, DateTimePicker, CoolBar Untuk lebih jelasnya tentang bagaimana life cycle dari OLE drag and drop operation pada visual basic 6 dapat dilihat pada gambar dibawah ini :

Project Otak – http://otak.csharpindonesia.net

69

NET101 – Migrasi VB6 ke VB.NET

Gambar 6-1. Life cycle of a Visual Basic 6 drag-and-drop operation

Drag and Drop Pada Visual Basic .NET Pada Visual Basic .NET operasi drag and drop telah dibuat menjadi satu dalam sebuah frame work. Operasi drag and drop dalam sebuah form ditangani dengan cara yang sama dengan proses drag and drop antara aplikasi. Perubahan ini sangat membantu bagi program yang dibuat menggunakan .NET. hanya saja bagi program yang sudah dibuat terlebih dahulu menggunakan Visual basic 6 maka kita terpaksa harus melakukan rewrite dari logika Drag and drop yang sudah dibuat. Pada gambar berikut dapat dilihat live cycle dari proses drag and drop pada visual basic .NET

Project Otak – http://otak.csharpindonesia.net

70

NET101 – Migrasi VB6 ke VB.NET

Gambar 6-2. Life cycle of a Visual Basic .NET drag-and-drop operation

Code berikut ini menggambarkan operasi drag and drop pada visual basic 6 menggunakan ole drag and drop. Private Sub PictureDisplay_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) PictureDisplay.OLEDrag End Sub Private Sub PictureDisplay_OLEDragDrop(Data As DataObject, _ Effect As Long, Button As Integer, Shift As Integer, X As Single, _ Y As Single) If Data.GetFormat(vbCFFiles) Then Dim i As Integer For i = 1 To Data.Files.Count Dim file As String file = Data.Files(i)

Project Otak – http://otak.csharpindonesia.net

71

NET101 – Migrasi VB6 ke VB.NET

If Not EntryExists(file) Then Select Case UCase(Right(file, 4)) Case ".tif", ".jpg", ".gif" FileList.AddItem file FileList.ListIndex = FileList.ListCount - 1 Set PictureDisplay.Picture = LoadPicture(file) End Select Else SelectListItem file End If Next End If End Sub Private Sub PictureDisplay_OLEStartDrag(Data As DataObject, _ AllowedEffects As Long) Data.Files.Clear Data.Files.Add FileList Data.SetData , vbCFFiles AllowedEffects = vbDropEffectCopy End Sub

Karena proses upgarde wizard tidak dapat melakukan konversi secara otomatis dan agar code diatas dapat dijalankan pada visual basic .NET, maka kita perlu melakukan perubahan pada codenya seperti tampak pada code dibawah ini dimana kita akan mendapatkan hasil yang sama dengan code diatas yang di jalankan di visal basic 6 Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load PictureDisplay.AllowDrop = True End Sub Private Sub PictureDisplay_DragDrop(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) _ Handles PictureDisplay.DragDrop ' Clear out the existing image and ensure that any resources ' are released If Not PictureDisplay.Image Is Nothing Then PictureDisplay.Image.Dispose() PictureDisplay.Image = Nothing End If Dim files() As String = e.Data.GetData(DataFormats.FileDrop, True) Dim i As Integer For i = 0 To files.Length - 1 If Not EntryExists(files(i)) Then FileList.SelectedIndex = FileList.Items.Add(files(i)) Else SelectListItem(files(i)) End If Next ' Set the picture to the last image added PictureDisplay.Image = Image.FromFile(FileList.SelectedItem) End Sub Private Sub PictureDisplay_DragEnter(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) _ Handles PictureDisplay.DragEnter

Project Otak – http://otak.csharpindonesia.net

72

NET101 – Migrasi VB6 ke VB.NET

If e.Data.GetDataPresent(DataFormats.FileDrop) Then Dim file() As String = e.Data.GetData(DataFormats.FileDrop, True) Select Case UCase(Microsoft.VisualBasic.Right(file(0), 4)) Case ".tif", ".jpg", ".gif" e.Effect = DragDropEffects.Copy Case Else e.Effect = DragDropEffects.None End Select Else e.Effect = DragDropEffects.None End If End Sub Private Sub PictureDisplay_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureDisplay.MouseDown Dim file(0) As String file(0) = FileList.SelectedItem Dim d As New DataObject(DataFormats.FileDrop, file) PictureDisplay.DoDragDrop(d, DragDropEffects.Copy) End Sub

Untuk lebih memahami proses life cycle dari drag and drop ini kita perlu benar benar memahami konsep drap and drop life cycle yang ada visual studio .NET

6.8 Collection Classes Proses upgrade terhadap sebuah collection yang dibuat menggunakan visual basic class builder utulity sangat lah mudah. Kita hanya perlu melakukan uncomment terhadap sebaris code maka collection yang dibuat akan dapat dijalankan pada visual basic .NET. Pada umumnya upgrade wizard akan menyisipkan komentar TODO pada code yang memerlukan modifikasi sederhana agar collection yang kita buat bisa dijalankan secara normal. Pada contoh dibahwa ini dapat dilihat sebuah string collection sederhanayang dibuat dengan visual basic 6 dengan menggunakan class wizard. 'Local variable to hold collection Private mCol As Collection Public Function Add(Key As String, Value As String) As String 'Set the properties passed into the method mCol.Add Value, Key Add = Value End Function Public Property Get Item(vntIndexKey As Variant) As String 'Used when referencing an element in the collection 'vntIndexKey contains either the Index or Key to collection, 'which is why it is declared as a Variant 'Syntax: Set foo = x.Item(xyz) or Set foo = x.Item(5) Set Item = mCol(vntIndexKey) End Property

the

Public Property Get Count() As Long

Project Otak – http://otak.csharpindonesia.net

73

NET101 – Migrasi VB6 ke VB.NET

'Used when retrieving the number of elements in the 'collection. Syntax: Debug.Print x.Count Count = mCol.Count End Property Public Sub Remove(vntIndexKey As Variant) 'Used when removing an element from the collection 'vntIndexKey contains either the Index or Key, which is why 'it is declared as a Variant 'Syntax: x.Remove(xyz) mCol.Remove vntIndexKey End Sub Public Property Get NewEnum() As IUnknown 'This property allows you to enumerate 'this collection with the For...Each syntax Set NewEnum = mCol.[_NewEnum] End Property Private Sub Class_Initialize() 'Creates the collection when this class is created Set mCol = New Collection End Sub Private Sub Class_Terminate() 'Destroys collection when this class is terminated Set mCol = Nothing End Sub

Hal yang akan terjadi ketika kita melakukan proses upgrade code diatas adalah pada NewEnum property collection akan di beri comment mark dan diganti dengan method GetEnumerator. Perhatikan pada bagian newenum proprty dan getenumeration method yang tampak pada code hasil upgrade wizard berikut ini. Friend Class StringCollection Implements System.Collections.IEnumerable 'Local variable to hold collection Private mCol As Collection Public Function Add(ByRef Key As String, _ ByRef Value As String) As String 'Set the properties passed into the method mCol.Add(Value, Key) Add = Value End Function Default Public ReadOnly Property Item(ByVal vntIndexKey Object) _ As String Get 'Used when referencing an element in the collection 'vntIndexKey contains either the Index or Key to the 'collection, 'which is why it is declared as a Variant 'Syntax: Set foo = x.Item(xyz) or Set foo = x.Item(5) Item = mCol.Item(vntIndexKey) End Get End Property

As

Public ReadOnly Property Count() As Integer Get 'Used when retrieving the number of elements in the

Project Otak – http://otak.csharpindonesia.net

74

NET101 – Migrasi VB6 ke VB.NET

'collection. Syntax: Debug.Print x.Count Count = mCol.Count() End Get End Property 'UPGRADE_NOTE: NewEnum property was commented out. 'Public ReadOnly Property NewEnum() As stdole.IUnknown 'Get 'This property allows you to enumerate 'this collection with the For...Each syntax 'NewEnum = mCol._NewEnum 'End Get 'End Property Public Function GetEnumerator() As System.Collections.IEnumerator _ Implements System.Collections.IEnumerable.GetEnumerator 'UPGRADE_TODO: Uncomment and change the following line to return 'the collection enumerator. 'GetEnumerator = mCol.GetEnumerator End Function Public Sub Remove(ByRef vntIndexKey As Object) 'Used when removing an element from the collection 'vntIndexKey contains either the Index or Key, which is why 'it is declared as a Variant 'Syntax: x.Remove(xyz) mCol.Remove(vntIndexKey) End Sub 'UPGRADE_NOTE: Class_Initialize was upgraded to 'Class_Initialize_Renamed Private Sub Class_Initialize_Renamed() 'Creates the collection when this class is created mCol = New Collection End Sub Public Sub New() MyBase.New() Class_Initialize_Renamed() End Sub 'UPGRADE_NOTE: Class_Terminate was upgraded to 'Class_Terminate_Renamed. Private Sub Class_Terminate_Renamed() 'Destroys collection when this class is terminated 'UPGRADE_NOTE: Object mCol may not be destroyed until it is 'garbage collected. mCol = Nothing End Sub Protected Overrides Sub Finalize() Class_Terminate_Renamed() MyBase.Finalize() End Sub End Class

Agar Collection class yang kita miliki bisa dijalankan maka kita hanya melakukan uncomment padacode di GetEnum Method yang pada visual basic .Net sama dengan property NewEnum kemudian kita lakukan modifikasi yang sekiranya diperlukan untuk code tersebut. Project Otak – http://otak.csharpindonesia.net

75

NET101 – Migrasi VB6 ke VB.NET

6.9 Kesimpulan Pada bab ini kita telah pelajari hal penting yang sering terjadi pada saat kita melakukan proses migrasi khususnya dengan menggunakan upgrade wizard tools. Setidaknya dengan mengetahui hal tersebut diatas kita memiliki kemampuan untuk melakukan migrasi dari visual basic 6 ke Visial basic .NET dengan lancar. Sehingga aplikasi yang sudah berjalan di visual basic 6 akan dapat diajalankan pada visual basic .NET

Project Otak – http://otak.csharpindonesia.net

76

NET101 – Migrasi VB6 ke VB.NET

7. Debuging in VB.Net Kunarto

7.1 Debuging Dalam Mendevelop sebuah program aplikasi, Porsi untuk proses debug pasti akan cukup memakan resource hal ini dikarenakan dalam pembuatan program aplikasi, banyak hal – hal yang bersifat logic ataupun kesalahan yang bersifat syntax terjadi tanpa kita sadari.

7.2 Debuging Consepts Secara garis besar proses debuging terjadi karena hal – hal tersebut dibawah ini ; Syntax-Related ( Hal – hal yang berhubungan dengan Syntak ) Proses Debuging yang disebabkan oleh hal ini pada umumnya sangat mudah ditangkap dan diperbaiki sumber errornya, apalagi dengan Tool – tools (IDE) pemrograman yang lebih maju seperti VB.Net yang telah mempunyai Inteligent Syntax Assist, yang sangat membantu developer untuk mengingat sedemikian banyak sintak. Runtime Error (Error pada saat Program dijalankan) Proses ini terjadi bukan karena kesalahan yang dikarenakan sintak, secara proses, syntak yang diberikan telah benar namun pada saat aplikasi dijalankan sistem menemukan hal – hal yang belum dipenuhi sehingga menjadikan error, sebagai contoh ketika anda memanggil sebuah method, atau sebuah variabel dimana anda belum menginisialisasi atau mendeclare variabel yang anda panggil, hal ini lah yang menyebabkan error tersebut kesalahan ini masih relatif lebih mudah ditelusuri untuk diperbaiki. Logic Error (Kesalahan Logic) Proses ini terjadi dikarenakan adanya kesalahan logika program yang anda develop oleh karenanya hasil yang anda peroleh tidak seperti yang anda inginkan. Dan proses pencarian solusi untuk error yang diakibatkan oleh kesalahan logic merupakan proses tersulit dan cukup memakan waktu karena kita harus melihat Perilaku aplikasi ketika sedang dijalankan sehingga proses error terjadi. Oleh karenannya Event Break point dan Watch akan sangat membantu anda dalam mencari kesalahan. (Menu debug dibahas pada sub bab selanjunya)

Project Otak – http://otak.csharpindonesia.net

77

NET101 – Migrasi VB6 ke VB.NET

7.3 Debug Menu Dalam VB.Net Debug menu memiliki beberapa tools yang sangat penting dalam menelusuri proses pecarian kesalahan (Debug) tools tersebut diantaranya adalah [ Step Into (F8), Step Over (Shift+F8), Step Out (Ctrl+Shift+F8) dan Run To Cursor (Ctrl+F8) ] Bagi anda yag sudah terbiasa dengan Proses Debug dengan VB6 mungkin hal ini bukan sesuatu yang baru untuk anda, namun dalam VB.Net tedapat beberapa hal yang memudahkan dalam proses men – debug. Sebuah aplikasi. Dan untuk lebih jelasnya dari menu – menu diatas kita coba implementasikan langsung dalam sebuah latihan debug dalam aplikasi [kalkulator sederha] berikut ini : Perhatikan Form Berikut ini ;

Gambar 6-1 (Form Kalkulator Sederhana) Gambar 6-1 merupakan Display dari sebuah program kalkulasi sederhana degan Code seperti pada listing berikut ini : Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " #End Region

Public Intvalue_3 As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Me.ComboBox1.Text = "+" Then Me.add_calc(Int(Me.TextBox1.Text), Int(Me.TextBox2.Text)) Me.TextBox3.Text = Intvalue_3 End If If Me.ComboBox1.Text = "/" Then Me.div_calc(Int(Me.TextBox1.Text), Int(Me.TextBox2.Text)) Me.TextBox3.Text = Intvalue_3 End If If Me.ComboBox1.Text = "-" Then Me.min_calc(Int(Me.TextBox1.Text), Int(Me.TextBox2.Text)) Me.TextBox3.Text = Intvalue_3 End If

Project Otak – http://otak.csharpindonesia.net

78

NET101 – Migrasi VB6 ke VB.NET

If Me.ComboBox1.Text = "*" Then Me.multiple_calc(Int(Me.TextBox1.Text), Int(Me.TextBox2.Text)) Me.TextBox3.Text = Intvalue_3 End If End Sub Public Function add_calc(ByVal IntValue_1 As Integer, ByVal IntValue_2 As Integer) Try Intvalue_3 = IntValue_1 + IntValue_2 Catch ex As Exception Intvalue_3 = 0 End Try Return Intvalue_3 End Function Public Function div_calc(ByVal IntValue_1 As Integer, ByVal IntValue_2 As Integer) Try Intvalue_3 = IntValue_1 / IntValue_2 Catch ex As Exception MsgBox("Terjadi Pembagian dengan Nol") Intvalue_3 = 0 End Try Return Intvalue_3 End Function Public Function min_calc(ByVal IntValue_1 As Integer, ByVal IntValue_2 As Integer) Try Intvalue_3 = IntValue_1 - IntValue_2 Catch ex As Exception Intvalue_3 = 0 End Try Return Intvalue_3 End Function Public Function multiple_calc(ByVal IntValue_1 ByVal IntValue_2 As Integer) Try Intvalue_3 = IntValue_1 * IntValue_2 Catch ex As Exception Intvalue_3 = 0 End Try Return Intvalue_3 End Function End Class

As

Integer,

7.3.1 Step Into Untuk menghentikan program yang sedang berjalan anda dapat melakukan dengan meletakan Break Point ( Lebih detail tentang Break Point akan dibahas dibelakang ) pada baris program yang anda kehendaki sebelum program dijalankan dengan cara Meng Klik kanan + Insert BreakPoint pada baris Program yang anda kehendaki. Gambar 6-2 Menunjukan Contoh Baris Program yang telah ditandai dengan Sebagai BreakPoint, Selanjutnya Coba Jalankan Form yang telah dibuat dan Masukan beberapa nilai Numeric pada textbox yang telah tersedia dan Klik Button [Hitung] , maka pada saat Button Di Klik maka system akan berhenti pada Baris Program yang telah ditandai dengan memberikan warna [Kuning] pada baris yang aktif.

Project Otak – http://otak.csharpindonesia.net

79

NET101 – Migrasi VB6 ke VB.NET

Selanjutnya Tekan F8 atau dari menu Debug ++> Step Into , maka system akan mengeksekusi baris tepat dibawahnya, hal ini bisa dilihat dengan diberikannya Line kuning pada baris yang berada tepat dibawah kode yang diberikan Break Point.

Klik Disini untuk memberi tanda BreakPoint

Gambar 6-2 Menempatkan BreakPoint Gambar 6-3 Menunjukan pada anda Proses Step Into sedang dijalankan. Yang perlu diperhatikan pada gambar 6-3 adalah nilai dari textbox3 (Dalam Linkaran Elips) masih kosong Kesimpulannya Step Into hanya Mengeksekusi 1 baris program saja Keuntungan yang paling dirasakan manakala kita ingin mengeksekusi line by Line code kita sehingga bisa ditemukan dimana letak kesalahan yang terjadi.

7.3.2 Step Over Step Over Mempunyai kemiripan dengan step Into Perbedaan Keduanya terletak pada bagaimana menjalankan proses debug pada sebuah fungsi, Kalau Step Into akan

Project Otak – http://otak.csharpindonesia.net

80

NET101 – Migrasi VB6 ke VB.NET

langsung masuk kedalam baris yang berada dalam sebuah Fungsi namun untuk step over Dia tidak akan masuk Kedalam Fungsi.

Gambar 6-3 Proses Step Into sedang Berjalan

7.3.3 Step Out Step Out dipergunakan jika anda ingin keluar dari lingkup Debug 1 level yang lebih atas sebagai contoh Jalankan Form yang telah dibuat dan masukan nilai kedalam tetxbox dan klik button [hitung] setelah proses Debug dimulai kontrol jalannya aplikasi dengan F8 (Step Into) sehingga baris program mengeksekusi fungsi [add_calc] pada saat proses debug sampai pada line pertama dari fungsi [add_calc] jalankan step Out dari Menu Debug++>Step Out, maka yang dikerjakan system adalah mengeksekusi seluruh sisa baris yang tersisa dan kembali pada baris pemanggil (Me.add_calc(Int(Me.TextBox1.Text), Int(Me.TextBox2.Text)))

Project Otak – http://otak.csharpindonesia.net

81

NET101 – Migrasi VB6 ke VB.NET

7.3.4 Run To Cursor Dipergunakan untuk menjalankan Program hingga posisi Kursor dikehendaki dengan mengeksekusi Baris Program (Fungsi) yang terlewati

7.4. Watches Watches adalah sebuah jendela yang menyediakan kepada kita sebuah mekanisme untuk berinteraksi dengan data - data pada saat Program berjalan (Break), dalam jendela watch kita bisa melihat nilai – nilai dari variabel dan nilai dari object Seperti Textbox dll. Dan hebatnya lagi kita bisa memasukan nilai – nilai test secara langsung kedalam object atau variabel dan merubahnya tanpa harus menghentikan program untuk lebih jelasnya perhatikan contoh berikut ini : Jalankan Program Kalkulator sederhana, dan masukan nilai untuk me.textbox1.text dengan 5 dan me.textbox2.text dengan 8 (Gambar 6-4)

Gambar 6-4 Masukan Nilai Seperti pada Gambar Pastikan telah diberikan BreakPoint pada Line Button1_click Klik Button Hitung Perhatikan Nilai – nilai variabel dan object pada window Autos (Gambar 6-5)

Gambar 6-5 Nilai-nilai Variabel dalam Window auto

Project Otak – http://otak.csharpindonesia.net

82

NET101 – Migrasi VB6 ke VB.NET

secara pehitungan biasa anda pasti akan tahu diluar kepala bahwa hasil 5+8 adalah 13 , sekarang cobalah anda mempengarui hasil tersebut dengan memaksakan sebuah variabel dalam object me.textbox2.text menjadi nilai 100 dari jendela Watch (jika jendela ini tidak ada anda bisa meng klik kanan pada line kode dan add watch)

Gambar 6-6 Ketik data dalam lingkaran lanjutkan proses Debug dengan mengklik Button Continue (Debug Menu ++> Continue) dan lihatlah hasilnya 105 bukan 13 Keuntungan dari fasilitas watchs ini sangat terasa dimana terjadi kesalahan logic dari program yang kita buat dan kita ingin melakukan banyak test terhadap nilai-nilai dari suatu variabel dan object.

7.5 BreakPoint Sebagaimana telah kita ketahui bahwa BreakPoint berfungsi untuk menghentikan program dimananpun anda ingin hentikan tinggal klik kanan pada baris yang ingin anda Break ++> Insert BreakPoint , Just Simple (tapi bukan itu yang akan kita bahas disini), disini saya ingin engajak kepada anda untuk mengenal Breakpoint da beberapa pembaharuan yang tidak akan anda temukan di VB6 sebagai contoh disini adalah Breakpoint Window. Dalam Breakpoint window anda bisa melihat Kondisi sebuah proses Break akan dijalankan dan pada loop keberapa Breakpoint akan dijalankan. Untuk lebih jelasnya mari kita demo untuk sama-sama mempelajari kemudahan yang diberikan oleh windows Breakpoint. Dalam contoh kali ini kita akan melakukan Break jika operator “+” dijalankan, sedangkan jika operator yang lain proses break tidak perlu dijalankan. Untuk dapat melakukan hal ini dari Line yang telah ditandai dengan BreakPoint (button1_click) klik kanan ++> BreakPoint Properties ++. Klik Button Condition dan masukan nilai seperti gambar 6-7

Project Otak – http://otak.csharpindonesia.net

83

NET101 – Migrasi VB6 ke VB.NET

Gambar 6-7 Memasukan Nilai untuk Break Condition Jalankan form dan berikan variasi input untuk membuktikan proses Debug sesuai dengan keinginan anda. Selanjutnya klik button Hitung dengan Operator “+” dan perhatikan window Breakpoint seperti gambar 6-8

Gambar 6-8 Informasi yang ditampilkan dalam Breakpoints Window

7.6 Exceptions Window Pada dasarnya Object Exception ini bekerja pada saat terjadi Error pada aplikasi yang sedang dijalankan. Dengan menginformasikan apa jenis error yang terjadi. Dan secara garis besar object exception ini dikelompokan kedalam beberapa hal yaitu : C++ Exceptions CLR Exceptions (Common language runtime Exception) Native Run-Time Check Win32 Exceptions

Project Otak – http://otak.csharpindonesia.net

84

NET101 – Migrasi VB6 ke VB.NET

Gambar 6-9 Macam – macam Exceptions Gimana Bingung ? ☺ , Sama saya juga bingung bingung .

, gini aja kita praktekin aja biar gak

jalankan form yang telah dibuat dan masukan nilai alphanumeric pada masing masing textbox dan Klik button Hitung dan lihatlah apa yang anda peroleh ? sebuah informasi tentang exeption atau error yang disebabkan oleh input yang anda berikan kira-kira seperti gambar berikut ini :

Gambar 6-10 Informasi tentang Exceptions

Project Otak – http://otak.csharpindonesia.net

85

NET101 – Migrasi VB6 ke VB.NET

dari gambar tersebut bisa anda lihat nama exceptionnya yaitu “System.InvalidCastException” jika anda tidak menginginkan pesan itu muncul lagi jika anda memasukan nilai alphanumeric pada program anda anda tinggal set When execption is thrown menjadi (o) Continue dan if the exception is not handle menjadi (o) Continue lihat gambar 6-11

Gambar 6-11 Menonaktifkan error yang disebabkan InvalidCastException jalankan form anda dan masukan nilai alphanumeric dan anda tidak akan menjumpai windows error information seperti yang anda jumpai saat pertama menjalankan form ini. Gimana gak bingung lagi khan ? ☺

7.7 Try Statement Disamping Exception ada cara yang lebih cantik dan manis untuk menghandle error secara programable yaitu dengan memasang syntax try …. Cacth …… end Try pada baris kode anda perhatikan contoh fungsi yang dilengkapi dengan syntax try berikut ini : Public Function div_calc(ByVal IntValue_1 As Integer, ByVal IntValue_2 As Integer) Try Intvalue_3 = IntValue_1 / IntValue_2 Catch ex As Exception MsgBox("Terjadi Pembagian dengan Nol") Intvalue_3 = 0 End Try Return Intvalue_3

End Function

Project Otak – http://otak.csharpindonesia.net

86

NET101 – Migrasi VB6 ke VB.NET

Yang perlu diperhatikan dalam syntax ini adalah pembagian Blok dimana baris – baris kode yang akan dicoba (Try) , sehingga object exception dibangkitkan dan blok yang akan menangani ketika object exception telah dibangkitkan (Cacth Exeption). Perhatikan contoh berikut ini remarklah kode dalam funsi div_calc sehingga seperti Listing dibawah ini : Public Function div_calc(ByVal IntValue_1 As Integer, ByVal IntValue_2 As Integer) 'Try Intvalue_3 = IntValue_1 / IntValue_2 'Catch ex As Exception ' MsgBox("Terjadi Pembagian dengan Nol") ' Intvalue_3 = 0 ' End Try 'Return Intvalue_3

End Function Jalankan form anda masukanlah nilai pada Textbox1 dengan 2 dan textbox2 dengan 1 klik button hitung maka kalkulator anda dapat menampilkan hasil 2, selanjutnya coba ganti angka 1 dengan 0 dan lihatlah hasilnya. Aplikasi akan berhenti dengan windows eror dan akan membawa aplikasi kembali ke Debug menu. Un-remark kembali baris kode anda dan jalankan kembali maka ketika terjadi pembagian dengan nilai 0 maka proses exception akan menangkap gejala ini dan memicu msgbox untuk menampilkan pesan sehingga anda tidak dibawa kemenu debug namun diinformasikan dengan messagebox seperti gambar 6-12 berikut Ini :

Gambar 6-12 Pesan yang ditampilkan ketika terjadi pembagian dengan 0 Contoh diatas adalah ontoh dimana anda sudah tahu jenis erronya yaitu terjadi pembagian dengan 0 , namun jika anda tidak jelas error apa cukup anda catch message error dan ditampilkan kedalam msgbox dengan baris program berikut ini : MsgBox(" Terjadi Error dengan Informasi => " + ex.Message)

7.8 Command Window Dalam VB.Net Command Windows dibagi menjadi 2 bagian yaitu Command Window dan Immediate window Anda dapat mengaktifkan Command Window dengan menekan button Ctrl+Alt+A atau dari Menu View ++> Other Window ++> Command Window

Project Otak – http://otak.csharpindonesia.net

87

NET101 – Migrasi VB6 ke VB.NET

Sedangkan untuk mengkatifkan Immediate Window anda dapat menekan Ctrl+G atau dari menu Debug ++. Window ++> Immediate Window Window Command dipergunakan untuk menjalankan perintah - perintah yang menggantikan fungsi mouse untuk mengakses menu sebagai contoh yang berhubungan dengan File anda dapat mengetikan File dan system assist akan membantu menampilkan semua yang berhubunga dengan menu file seperti gambar berikut ini :

Gambar 6-13(Tampilan Command Window Sedangkan Immediate Command dipergunakan untuk memasukan nilai – nilai variabel dari object yang sedang berjalan gamba dibawah ini merupakan hal – hal yang bisa dilakukan dalam Immediate Window (Gambar 6-14)

Gambar 6-14 Contoh dari Commad dalam Immediate Window Dari semua bagian tentang Debunging masih ada beberapa window lagi yang ada dalam VB.Net Debuging yaitu Window Auto, Local dan Call Stack, dimana ketiga window ini akan menampilkan nilai - nilai dan Proses Run – time dari aplikasi yang sedang berjalan.

7.9 Kesimpulan Pembaharuan dalam Teknik Debuging yang dikembangkan dalam Kerangka .Net Framewok merupakan Kemajuan dalam teknik debug yang diberikan oleh microsoft dalam Aplikasi Visual Studio.Net 2003 ini

Project Otak – http://otak.csharpindonesia.net

88

NET101 – Migrasi VB6 ke VB.NET

8. Case study migrasi Visual Basic ke Visual Basic.NET dengan menggunakan wizards Ricky Suryo Utomo

Pada bab ini akan dibahas cara-cara melakukan migrasi dari aplikasi Visual Basic ke VISUAL BASIC.NET dengan menggunakan wizards dan disertai dengan beberapa case study. Pada bagian ini pembaca dapat menginstall Code Advisor for Visual Basic 6. Aplikasi Code Advisor merupakan aplikasi yang digunakan pada Visual Basic 6 untuk mencari code yang tidak di support oleh Visual Basic.NET dengan mudah.

8.1 Aplikasi VCR. Aplikasi yang menjadi case study berikut ini adalah aplikasi VCR yang awalnya ditulis dalam code Visual Basic 6. aplikasi ini merupakan aplikasi yang memungkinkan pemakainya melakukan simulasi aktivitas VCR seperti merubah channel, memainkan tape, melakukan fast forward atau reserve, melakukan recording, dan melakukan setting waktu untuk merekam channel pilihan.

Gambar 7-1. Interface aplikasi VCR

Project Otak – http://otak.csharpindonesia.net

89

NET101 – Migrasi VB6 ke VB.NET

Adapun langkah-langkah melakukan migrasi adalah sebagai berikut, Mengelompokan code menjadi empat versi Menjalankan Code adivisor pada aplikasi Visual Basic.NET Melakukan Upgade dengan Visual Basic.NET dengan menggunakan wizards Melakukan enhancement dan modifikasi untuk memanfaatkan keunggulan dari native .NET Pembahasan lebih mendetail dapat kita liat pada penjelasan-penjelasan pada sub bab berikut.

8.2 Pengelompokan code menjadi empat versi Tahap pertama adalah membuat empat versi folder, dimana nantinya masing-masing folder akan berisi versi code aplikasi VCR yang berbeda-beda. Berdasarkan jenisnya masing-masing forlder tersebut dapat dibedakan menjadi, VB6, merupakan folder yang berisi code orisinil dari Visual Basic 6.0 CodeAdvisor, merupakan folder yang berisi code Visual Basic 6.0 setelah dijalankan pada Code Advisor. Didalam code ini umumnya ditambahkan revisi yang didasarkan pada rekomendasi Code Advisor. Upgrade, merupakan folder yang berisi code setelah menjalankan update wizard, termasuk perbaikan yang dibutuhkan agar aplikasi dapat beroperasi pada Visual Basic.NET Optimized, merupakan folder yang berisi code yang sudah di modifikasi agar memanfaatkan keunggulan dari fitur-fitur native .NET.

8.3 Menjalankan Code Advisor fo Visual Basic 6.0 Setelah folder-folder dipersiapkan kita dapat mengcopykan terlebih dahulu isi dari folder Visual Basic 6 yang berisi orisinal code ke folder Code Advisor. Kemudian open code Visual Basic project yang ada pada Code Advisor.

Gambar 7-2. Toolbar Microsoft Code Advisor Microsoft Code Advisor merupakan add-ins dari Visual Basic 6 yang berfungsi untuk memberikan saran-saran dalam rangka persiapan proses upgrade ke Visual Basic .NET. Code Advisor dapat menyediakan report summary atas saran-sarannya berupa XML/HTML. Selain itu juga menambahkan komentar “FIXIT” pada code dengan klik , dengan demikian berikut contoh code Visual Basic yang sudah melalui pada tombol Code Advisor. Disebabkan controls pada Visual Basic.NET tidak memiliki method Cls 'FIXIT: picTV.Cls method has no Visual Basic .NET equivalent and will not be upgraded. picTV.Cls

Disebabkan Label control pada Visual Basic.NET tidak memiliki event Change 'FIXIT: lblChannel_Change event has equivalent and will not be upgraded.

Project Otak – http://otak.csharpindonesia.net

no

Visual

Basic

.NET

90

NET101 – Migrasi VB6 ke VB.NET

Private Sub lblChannel_Change()

8.4 Melakukan Upgrade dari Visual Basic ke Visual Basic.NET dengan wizards Setelah dilakukan menjalankan Microsoft Code Advisor pada code Visual Basic 6.0, maka proses selanjutnya adalah melakukan upgrading melalui Visual Basic.NET Upgrade Wizard. Dalam melakukan upgrade langkah pertama adalah membuat sebuah blank solution pada Visual Studio.NET. Kemudian tahap selanjutnya adalah menambahkan project melalui “add existing project” dan tambahkanlah project file *.vbp dari aplikasi Visual Basic 6 pada folder CodeAdvisor, maka akan muncul interface upgrade wizard berikut ini.

Gambar 7-3. Upgrade Wizard Welcome Screen Screen pada Gambar 7.3 merupakan screen awal yang muncul pada Upgrade Wizard yang menjelaskan proses-proses yang akan dilakukan dalam rangka upgrade dari Visual Basic 6 ke Visual Basic.NET. Setelah klik pada tombol “Next” maka akan menuju screen kedua pada Gambar 7.4, dimana dapat ditentukan type dari aplikasi yang akan diupdate. Type project yang dapat dibedakan menjadi executable dan library.

Project Otak – http://otak.csharpindonesia.net

91

NET101 – Migrasi VB6 ke VB.NET

Gambar 7-4 Upgrade Wizard Project Type Screen

Gambar 7-5 Upgrade Wizard Project Location Screen Setelah ditentukan type dari aplikasi maka klik tombol “Next” akan berpindah ke screen ketiga Gambar 7.5. untuk menetukan lokasi project upgrade pada disk. Dalam kasus ini project upgrade diletakan dalam folder “Upgraded”, agar tidak tercampur dengan orisinal codenya. Selanjutnya klik tombol “Next” untuk melanjutkan proses ke screen keempat Gambar 7.6. yang merupakan screen untuk melakukan eksekusi dari upgrade wizard.

Project Otak – http://otak.csharpindonesia.net

92

NET101 – Migrasi VB6 ke VB.NET

Gambar 7-6. Upgrade Wizard Execute Screen Setelah proses dieksekusi dengan klik tomblol “Next”, maka progress bar dapat dilihat pada screen kelima Gambar 7.7. Tunggulah proses hingga muncul tombol “Finish”.

Gambar 7-7. Upgrade Wizard Progress Bar Screen Setelah klik tombol “Finish” maka didapatkan versi upgrade Visual Basic.NET pada solution dan cobalah untuk melakukan rebuild untuk memastikan proses migrasi berjalan lancar. Dalam proses upgrade aplikasi VCR ini ada beberapa issue yang timbul antara lain,

Project Otak – http://otak.csharpindonesia.net

93

NET101 – Migrasi VB6 ke VB.NET

Perubahan Graphics, pada Visual Basic 6 banyak object-object memiliki kemampuan graphicnya sendiri-sendiri, sedangkan pada Visual Basic.NET semua kemampuan graphic sudah disediakan dengan namespace System.Drawing, yang dibungkus dengan GDI+ API yang baru. Perubahan yang terjadi antara lain, Untuk clear control PictureBox (picTV), method picTV.Cls digantikan dengan method Graphics.Clear Dim g As Graphics = picTV.CreateGraphics() ' Clear the display 'FIXIT: picTV.Cls method has no Visual Basic .NET equivalent and will not be upgraded. FixIT90210ae-R454-R67265 'UPGRADE_ISSUE: PictureBox method picTV.Cls was not upgraded. Click for more: 'mshelp://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2064"' 'picTV.Cls() ' MOD: Use the Graphics.Clear method to replace the Cls method g.Clear(picTV.BackColor) g.Dispose()

Untuk mencetak message pada control PictureBox (picTV), method picTV.Print digantikan Graphics.DrawString ' Create graphics object to work with PictureBox Dim g As Graphics = picTV.CreateGraphics() ' Was the channel changed? If isChannelChanged Then g.DrawString("Channel: " & vntChannel, New Font("Microsoft Sans Serif", 18), New SolidBrush(Color.White), 0, 0) g.DrawString(lblTime.Text, New Font("Microsoft Sans Serif", 18), New SolidBrush(Color.White), 0, 25) End If ' Is recording in progress? If isRecording Then g.DrawString("Recording: Channel " & vntChannel, New Font("Microsoft Sans Serif", 18), New SolidBrush(Color.White), 0, 0) g.DrawString(lblTime.Text, New Font("Microsoft Sans Serif", 18), New SolidBrush(Color.White), 0, 25) End If

Untuk menampilkan image pada control PictureBox(PicTV), method picTV.PaintPicture digantikan dengan Graphics.DrawImage ' Show the new image in the new location 'FIXIT: picTV.PaintPicture method has no Visual Basic .NET equivalent and will not be upgraded. FixIT90210ae-R454-R67265 'UPGRADE_ISSUE: PictureBox method picTV.PaintPicture was not upgraded. Click for more: 'mshelp://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2064"' 'picTV.PaintPicture(objImage.Image, intLeft, 1200) ' MOD: Use the Graphics.DrawImage method to replace the PaintPicture method 'Use 90 pixels for the y coordinate, instead of 1200 twips

Project Otak – http://otak.csharpindonesia.net

94

NET101 – Migrasi VB6 ke VB.NET

g.DrawImage(objImage.Image, New System.Drawing.Point(intLeft, 90)) g.Dispose()

Perubahan Control, pada Visual Basic.NET antara lain, Procedure lblChannel_TextChanged pada .NET digunakan untuk menggantikan event lblChannel_Change pada Visual Basic 6. karena event Change tidak ada dalam Visual Basic.NET Proses Upgrade Wizard mengganti control shape menjadi label, procedure HighlightButton pada VCRModule.vb dimodifikasi menjadi label. Wizard merubah array control label pada set.frm menjadi LabelArray. LabelArray merupakan variasi array object pada namespace Microsoft.VisualBasic.Compatibility yang didesain untuk melakukan emulasi arry control pada Visual Basic 6. LabelArray dianggap sebagai sebuah object dalam component tray dari Set.vb

8.5 Melakukan enhancement dan modifikasi Enhancement dan modifikasi dilakukan untuk memperoleh code yang perfomancenya optimal dan menggunakan keunggulan yang dimiliki oleh .NET. Pengembangan dapat dilakukan dengan penambahan feature dalam hal ini misal menambahkan gambar animasi gif yang berbeda untuk setiap channelnya. Secara programming dapat juga dilakukan modifikasi secara intensif menambahkan element dari bahasa programming yang baru serta paradigma object dan programming pada .NET Framework.

8.6 Balai Pustaka VB 6 Sample Code for Upgrade from VB to VB.NET. http://www.microsoft.com/downloads/details.aspx?FamilyId=EF463B3A-EF97-454D839E-7668C1113022&displaylang=en Microsoft Code Advisor for VB 6.0 http://www.microsoft.com/downloads/details.aspx?FamilyId=A656371A-B5C0-4D40B015-0CAA02634FAE&displaylang=en

Project Otak – http://otak.csharpindonesia.net

95

NET101 – Migrasi VB6 ke VB.NET

Daftar Pustaka

1. MSDN Library 2. Thuan L. Thai dan Hoang Lam. .NET Framework Essentials, 3nd Edition, 2003, O’Reilly, Sebastopol, CA USA. 3. Situs Web Microsoft yang membahas Overview Teknologi Framework NET (http://msdn.microsoft.com/netframework/technologyinfo/overview/) 4. Situs Web Microsoft yang berisi FAQ (Frequently Asked Question) Framework .NET (http://msdn.microsoft.com/library/default.asp?url=/library/enus/dndotnet/html/ faq111700.asp). 5. situs Web GotDotNet yang berisi Daftar Bahasa Yang Mendukung .NET (http://www.gotdotnet.com/team/lang/)

.

Project Otak – http://otak.csharpindonesia.net

96

NET101 – Migrasi VB6 ke VB.NET

Lampiran MSDN Connection MSDN Connection adalah komunitas developer .NET di Indonesia. Komunitas ini bertujuan meningkatkan pemahaman dan pengalaman anda tentang .NET Dengan bergabung bersama kami, anda otomatis mendapatkan update secara berkala mengenai perkembangan teknologi .NET langsung dari Microsoft Indonesia. Jika anda ingin bergabung dengan kami, caranya mudah. Hanya dengan mengklik url http://www.msdnconnection.com/indonesia dan masukkan data-data anda.

Komunitas VB.NET Indonesia Komunitas VB.NET Indonesia merupakan bagian dari komunitas .NET Indonesia (INDC) yang berfokus kebidang teknologi .NET dengan menggunakan bahasa VB.NET Komunitas VB.NET Indonesia dapat dijumpai di url www.vbindonesia.net dan anda dapat bergabung di site ini.

Komunitas .NET Indonesia (INDC) Komunitas .NET Indonesia merupakan official dari komunitas-komunitas di Indonesia yang berbasis .NET. Anda bisa bertemu dengan beberapa aktivis komunitas .NET diseluruh wilayah Indonesia. Anda dapat bergabung kedalam komunitas ini dengan masuk ke url www.netindonesia.net dan dapat juga bergabung ke milis DOTNET

Project Otak – http://otak.csharpindonesia.net

97

NET101 – Migrasi VB6 ke VB.NET

Strukutur Organisasi Project Otak 2005-2006

Secara umum: Semua team adalah Technical Writer Semau Technical Writer harus mentaati semua aturan yang dibuat oleh Technical Writer Leader pada setiap project yang diikuti Semua wajib menyukseskan semua project yang ada di project otak

Project Manager Manajemen semua departemen dan kegiatannya Interface antara team project otak dengan publik Memastikan semua kegiatan berjalan sesuai dengan scenario dan fungsinya.

Secretary Mengatur semua administrasi project otak Manajemen keanggotaan team project otak Resource, Information, and Technology Department Diketuai oleh seorang Kepala Department ( Department Head) Tugas o Manajemen resource technical writer termasuk alokasi timing o Mengontrol semua project yang sedang berjalan agar berjalan sesuai dengan schedule Didalam departemen ini terdiri dari semua technical writer Setiap project e-book akan dikepalai oleh Technical Writer Leader yang bertanggung jawab ke Department Head

Project Otak – http://otak.csharpindonesia.net

98

NET101 – Migrasi VB6 ke VB.NET

QA Department Diketuai oleh seorang Kepala Department ( Department Head) Tugas o Manajemen resource Technical Editor o Menguji semua materi yang ada sesuai dengan standard dan template

Planning, Strategic, and Finance Department Diketuai oleh seorang Kepala Department ( Department Head) Tugas o Membuat planning dan strategi dalam hal pengembangan dan peningkatan project otak baik materi, resource maupun member o Mencari sumber dana baik dari bentuk kerja sama maupun sponsorship

Publication and Marketing Department Diketuai oleh seorang Kepala Department ( Department Head) Tugas o Membuat publikasi dan marketing ke publik tentang project otak

Berikut ini susunan pengurus project otak yang baru dan berlaku sejak tanggal 3 Desember 2004 Project Manager

:

Agus Kurniawan ([email protected])

Secretary

:

Clementine Katarina Dewi Maya ([email protected])

Resource, Information, and Technology Department Head

:

M Fathur Rahman ([email protected] )

QA Department Head

:

Panji Aryaputra ([email protected] )

Planning, Strategic, and Finance Department Head

:

Risman Adnan ([email protected] )

Publication and Marketing Department Head

:

Kunarto ([email protected] )

Untuk pengurus diatas, program kerja nya bisa dimulai pada tanggal 3 Desember 2004

Agus Kurniawan Project Manager of Project Otak

Project Otak – http://otak.csharpindonesia.net

99

NET101 – Migrasi VB6 ke VB.NET

Program Donatur Project Otak

Untuk kemajuan dan kelangsungan project otak, kami dari team project otak mengundang para participant yang peduli atas kemajuan project ini dan resource teknologi .NET untuk menyumbang dana ke project ini. Program donatur ini terbagi menjadi 2 jenis yaitu Program donatur untuk kategori personal. Program ini dapat diikuti oleh masingmasing individu yang peduli pada project ini. Program donatur untuk kategori perusahan/institusi/lembaga. Program ini dapat diikuti oleh perusahan/institusi/lembaga Jika anda atau perusahan/institusi/lembaga anda tertarik untuk menyumbangkan dana ke project otak ini maka bisa menghubungi project manager, Agus Kurniawan, via email yaitu: [email protected]

Project Otak – http://otak.csharpindonesia.net

100

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF