Dalam proses pengembangan perangkat lunak, terdapat beberapa masalah yang tampaknya sederhana, namun mudah diabaikan oleh pengembang awam. Keberadaan "Bug" ini mempengaruhi komersialisasi perangkat lunak kami. Di bawah ini tercantum beberapa masalah yang penulis temui ketika menggunakan Visual Basic untuk mengembangkan perangkat lunak. Solusi diberikan di sini untuk didiskusikan dan dipertukarkan semua orang.
1. Cegah aplikasi memuat dua kali
Saat aplikasi kita berjalan di bawah Windows, selama pengoperasian, terkadang kita meminimalkan dan menyembunyikannya, atau beralih ke manajer program untuk operasi lain, lalu ingin masuk ke aplikasi aslinya. Jika kita lupa Jika Anda me-restart aplikasi yang baru saja Anda mulai, dua salinan dari aplikasi yang sama akan dimuat ke dalam memori secara bersamaan. Hal ini tidak hanya memakan ruang memori, tetapi juga dengan mudah menyebabkan kesalahan pengoperasian dan kehilangan data. Untuk mencegah hal ini terjadi, program harus dapat memberikan prompt "sudah dimuat" atau langsung masuk ke aplikasi yang pertama kali dimuat. Masalah ini sepertinya sulit untuk diatasi, padahal selama kita memahami mekanisme aplikasi manajemen Windows, maka masalah tersebut bisa dengan mudah diatasi.
Kita tahu bahwa untuk setiap aplikasi yang berjalan, Windows memberikan "Pegangan" unik dan kode modul (Module). Ketika dua salinan dari program yang sama dijalankan pada waktu yang sama, kode modul dari kedua program tersebut adalah sama. Oleh karena itu, selama kita menemukan dua kode modul yang identik di memori, kita mengetahui bahwa dua salinan dari program tersebut sedang berjalan dan dapat mengendalikannya. Dua fungsi antarmuka GetModuleHandle dan GetModuleUsage yang disediakan oleh Windows dapat menyelesaikan tugas ini. Metode spesifiknya adalah sebagai berikut. Pertama, deklarasikan fungsi API di file modul baru (*.Bas).
DeklarasikanFunctionGetModuleHandleLibKernel(ByVallpPRogName$)
DeklarasikanFunctionGetModuleUsageLibKernel(ByValhModule)
Pada saat yang sama, buatlah subproses bernama main. Kode pada subproses tersebut adalah sebagai berikut:
SubUtama()
Penanganan kesalahan OnErrorGoToerrMain
Pegangan modul DimhModule
DimAppCount'Jumlah aplikasi
appPath$=app.Path /'jalur startup aplikasi
hModule=GetModuleHandle(appPath$ app.EXEName .exe)'Dapatkan kendali programnya.
AppCount=GetModuleUsage(hModule)'Mendapatkan kode modul, yaitu jumlah aplikasi yang berjalan.
lfAppCount>1Maka'Jumlah aplikasi yang sama lebih besar dari 1
Program MsgBox telah dimuat, 64
End' mengakhiri aplikasi yang sedang dimulai
Lain-lain
mainForm.Show'mainForm adalah bentuk utama program
Akhirlf
KeluarSub
errUtama:
lfErr<>0Lalu
MsgBox Terjadi kesalahan saat memulai program, 64
KeluarSub
Akhirlf
Sub Akhir
Setelah proses selesai, di bawah [opsi] menu utama VB3.0, pilih item menu [Proyek] dan atur item [StartupFrom] ke Submain, yaitu ketika program dijalankan, program dimulai dari subrutin Submain terlebih dahulu. Ini memastikan bahwa kode di atas akan dieksekusi. Submain adalah nama subproses yang disetujui di VB3.0 dan tidak dapat diganti dengan nama lain.
Buat ulang file EXE, mulai aplikasi di bawah manajer program, lalu perkecil formulir yang dihasilkan, lalu jalankan dari manajer program. Pengguna akan melihat kotak pesan yang memberi tahu pengguna bahwa aplikasi telah selesai. Setelah memuat, program kedua dihentikan eksekusi. Program di atas hanya digunakan untuk mencegah pemuatan program kedua, tetapi tidak otomatis masuk ke program pertama ketika program kedua tidak dapat dijalankan. Untuk mencapai hal ini, prosedur yang terlibat relatif rumit dan tidak akan diperkenalkan secara rinci di sini.
2. Tentukan jalur instalasi Windows
Dalam perangkat lunak yang kami kembangkan, terkadang kami langsung memanggil aplikasi kecil yang disediakan oleh Windows, seperti kalkulator, perencana, dll., atau kami perlu meletakkan beberapa file khusus di jalur Windows atau SISTEM. Biasanya Windows diinstal di direktori C:WINDOWS, tetapi pengguna dapat mengubah nama direktori home Windows sesuka hati. Oleh karena itu, dalam perangkat lunak kita, kita perlu menentukan jalur instalasi Windows. Untuk masalah ini, Windows menyediakan dua fungsi API: GetWindowsDirectory dan GetSystemDirectory, yang dapat mengembalikan nama direktori Windows dan direktori SYSTEM.
Untuk tujuan ini, siapkan fungsi umum GetWinDir, yang mengembalikan nama direktori instalasi Windows. Demikian pula, Anda dapat menulis GetSysDir, dihilangkan.
Deklarasikan fungsi API dalam file modul *.BAS
DeclareFunctionGetWindowsDirectoryLibKernel(ByValipBufferAsString,ByValnSizeAsInteger)asIntegerFunctionGetWinDir()AsStringDimWindir$Windir$=Space$(144)'144 adalah panjang maksimum teoretis dari nama direktori WINDOWS.
lfGetWindowsDirectory(Windir$,144)=0Kemudian
MsgBox tidak dapat menentukan jalur instalasi WINDOWS, 16
DapatkanWinDir=
Kalau tidak
Windir$=SEMUAPemangkas$(Windir$)
ifKanan$(Windir$,1)<>“/”thenWindir$=Windir$ “/”
'Tambahkan garis miring terbalik
DapatkanWinDir=Windir$
Akhirlf
Fungsi Akhir
ALLTRIM adalah fungsi yang digunakan untuk menghapus karakter null dalam sebuah string.
FungsiALLTrim(FatStr$)AsString
'Fungsi inihapusSpacecharinstringofFatStr$
RedupkanStr$,I
SlimStr$=FatStr$
I=lnStr(SlimStr$,Chr$(0))'Posisi spasi
IfIThenSlimStr$=Kiri$(SlimStr$,I-1)
SlimStr$=Ltrim$(Rtrim$)(SlimStr$))
AIITrim$=SlimStr$
Fungsi Akhir
3. Perintah untuk menyimpan data sebelum menutup formulir
Secara umum, biasanya ada 5 cara untuk menutup aplikasi:
1. Pengguna memilih perintah [Tutup] di Kotak Kontrol pada formulir saat ini.
2. Merangsang kode perintah akhir pada program (seperti End, Unload)
3. Keluar dari Windows
4. Tutup aplikasi di daftar tugas Windows.
5. Selama pengoperasian multi-dokumen, penutupan formulir MDI utama akan menyebabkan formulir sub-MDI ditutup.
Sebelum menutup aplikasi, kita perlu memberikan kesempatan kepada pengguna untuk menanyakan "Apakah Anda ingin menyimpan data?" atau membatalkan operasi "tutup". Di VB, penutupan form memicu event Form_Unload. Kita dapat memprogram event ini untuk mengontrol operasi "penutupan". Dengan asumsi sudah ada prosedur FileSave yang digunakan untuk menyimpan file, Anda dapat menulis program seperti ini.
SubForm_Unload(BatalkanAslnteger)
selectcastMsagbox("Menyimpan data?", 3 32)
'Ya, Tidak, Cnacel tiga pilihan
case6'YA
FileSave' menyimpan data
kasus2'batal
Cancel=TRUE'Batalkan operasi penutupan
caseelse'NO' tidak menyimpan, lakukan operasi shutdown
Pilihan akhir
Sub Akhir
Variabel Batal dalam kode di atas adalah variabel keluar yang melekat pada acara Form_unload itu sendiri. Variabel ini mengirimkan pesan ke proses kontrol Windows untuk mengontrol arah program.
Tiga contoh di atas hanyalah beberapa masalah kecil dalam proses perbaikan perangkat lunak. Untuk membuat perangkat lunak stabil dan dapat diandalkan, perlu dilakukan banyak pekerjaan yang cermat dan hati-hati. Beberapa masalah dapat diselesaikan dengan mengeksplorasi potensi VB itu sendiri dan menguasai secara mendalam keterampilan pengoperasian beberapa proses; sementara beberapa masalah yang lebih kompleks melibatkan operasi yang mendasari Windows dan dapat dengan mudah direalisasikan menggunakan fungsi Windows API. Tentu saja hal ini memerlukan pemahaman tertentu tentang fungsi dan mekanisme Windows. Seiring dengan peningkatan level pemrograman Windows, secara bertahap kita akan belajar dan suka menggunakan fungsi API untuk membantu menyelesaikan pengkodean program. ->