Menggunakan string sebagai variabel diskriminan dalam pernyataan Kasus Delphi Chen Jiaxin╱[email protected]● Saat menyebutkan pernyataan Kasus di pendahuluan, kasus aplikasi pertama yang terlintas dalam pikiran adalah melalui variabel Tentukan untuk memungkinkan aliran program memilih jalur yang cocok untuk melanjutkan eksekusi sesuai dengan kondisi yang berbeda. Atau, ketika ada serangkaian kombinasi pernyataan if dan else if dalam program kita, kita sering berpikir untuk menggunakan pernyataan Case untuk menyederhanakan kode program dan meningkatkan keterbacaan serta efisiensi eksekusi. Namun, dalam beberapa kasus, pernyataan Kasus tidak dapat diterapkan pada program kami karena variabel diskriminan yang dibolehkan terbatas pada segala bentuk xPRession) dan tipe ordinal. Inilah yang disebut "Tipe ordinal" mengacu pada tipe "terurut" seperti bilangan bulat, karakter, enumerasi, Boolean dan set, dan dapat diterapkan pada hal-hal seperti Ord(), Pred(), Succ(), Low() dan High() Jenis ekspresi (lihat [1]). Sayangnya, string (string) jelas bukan tipe ordinal, dan pada titik tertentu (contoh akan diberikan di bawah), ketika tipe variabel kondisi adalah string dan terdapat banyak cabang kondisional, meskipun tidak berdaya, namun sepertinya tidak ada cara lain selain menggunakan banyak pernyataan if dan else if, sayangnya. Misalnya, kode berikut tidak diperbolehkan di Delphi: #001 var #002 Str: String; // Mendeklarasikan variabel diskriminan bertipe String #003 mulai #004 case Str of // Pesan kesalahan: Diperlukan tipe ordinal #005 / / ... #006 end; #007 end;Ini tidak dapat dikompilasi, jadi solusi tradisional biasanya adalah mengubahnya menjadi kombinasi dari sejumlah besar pernyataan if dan else if. Pada titik ini saya benar-benar berharap kita menggunakan Visual Basic, karena kode berikut diizinkan oleh kompilernya (lihat [5]): #001 Dim Str As String ' Mendeklarasikan variabel diskriminan bertipe String #002 Select Case Str ' setara ke pernyataan Kasus Delphi #003 '... #004 End Select ' OK, melalui kompilasi. Jadi dalam artikel ini, penulis mencoba menggunakan masalah ini sebagai titik awal, dalam "Selain mengkonversi ke dalam kombinasi if dan else if pernyataan "Mencari solusi lain yang layak selain solusi tradisional", dan sangat berharap artikel ini dapat bermanfaat bagi orang-orang yang menghadapi masalah ini dan ingin menemukan solusinya (setelah membaca [12]-[14], penulis selanjutnya menemukan bahwa memang demikianlah masalahnya) Membantu. Izinkan saya memberi Anda pratinjau terlebih dahulu. Saya berencana memperkenalkan 7 solusi. 5 metode pertama adalah kutipan atau ekstensi dari [9]-[13], dan metode keenam adalah multi-loader komprehensif yang diterapkan oleh penulis. versi. Opsi-opsi ini adalah: v Opsi 1: Pencarian string array v Opsi 2: Gunakan indeks nyata v Opsi 3: Gunakan fungsi hash v Opsi 4: Pernyataan kasus bersarang v Opsi 5: Gunakan TStringListv Opsi 6: Terapkan fungsi multi-muat Solusi 7: Terapkan instruksi yang sudah jadi. Artikel ini akan memulai dengan meninjau topik-topik seperti pernyataan bersyarat (konten utama lihat [1] dan [4]) dan string pengenalan (konten utama lihat [2]). itu. Di bagian ini, baca bagian "Masalah Kinerja" langsung di akhir artikel.