Pernahkah Anda menemukan diri Anda menulis kode yang sama berulang-ulang untuk melakukan beberapa tugas umum di dalamnya penangan acara? Iya! Sudah waktunya bagi Anda untuk belajar tentang program dalam suatu program. Mari kita sebut subrutin mini-program tersebut.
Pengantar subrutin
Subrutin adalah bagian penting dari apa pun bahasa pemrograman, danDelphi tidak terkecuali. Dalam Delphi, umumnya ada dua jenis subrutin: fungsi dan prosedur. Perbedaan yang biasa antara fungsi dan prosedur adalah bahwa fungsi dapat mengembalikan nilai, dan prosedur umumnya tidak akan melakukannya. Suatu fungsi biasanya disebut sebagai bagian dari ekspresi.
Lihatlah contoh-contoh berikut:
prosedur Katakan halo(const sApa:tali); mulai
ShowMessage ('Hello' + sWhat); akhir; fungsi Tahun(const BirthYear: integer): integer; var
Tahun, Bulan, Hari: Word; mulai
DecodeDate (Tanggal, Tahun, Bulan, Hari); Hasil: = Tahun - Ulang Tahun; akhir;
Setelah subrutin telah ditentukan, kami dapat memanggil mereka satu atau lebih kali:
prosedur TForm1.Button1Click (Pengirim: TObject); mulai
SayHello ('Pengguna Delphi'); akhir; prosedur TForm1.Button2Click (Pengirim: TObject); mulai
SayHello ('Zarko Gajic'); ShowMessage ('You are' + IntToStr (YearsOld (1973)) + 'tahun!'); akhir;
Fungsi dan Prosedur
Seperti yang bisa kita lihat, kedua fungsi dan prosedur bertindak seperti program mini. Secara khusus, mereka dapat memiliki tipe sendiri, konstanta dan deklarasi variabel di dalamnya.
Perhatikan lebih dekat fungsi SomeCalc (lain-lain):
fungsi SomeCalc. (const sStr: tali; const iYear, iMonth: integer; var iDay: integer): boolean; mulai...akhir;
Setiap prosedur atau fungsi dimulai dengan a tajuk yang mengidentifikasi prosedur atau fungsi dan mencantumkan parameter penggunaan rutin jika ada. Parameter terdaftar dalam tanda kurung. Setiap parameter memiliki nama pengenal dan biasanya memiliki tipe. Tanda titik koma memisahkan parameter dalam daftar parameter dari satu sama lain.
sStr, iYear, dan iMonth dipanggil parameter konstan. Parameter konstan tidak dapat diubah oleh fungsi (atau prosedur). IDay disahkan sebagai parameter var, dan kita bisa mengubahnya, di dalam subrutin.
Fungsi, karena mengembalikan nilai, harus memiliki a tipe pengembalian dideklarasikan di akhir header. Nilai pengembalian suatu fungsi diberikan oleh penugasan (final) atas namanya. Karena setiap fungsi secara implisit memiliki Hasil variabel lokal dari jenis yang sama dengan nilai pengembalian fungsi, menugaskan ke Hasil memiliki efek yang sama seperti menugaskan ke nama fungsi.
Memposisikan dan Memanggil Subrutin
Subrutin selalu ditempatkan di bagian implementasi unit. Subrutin tersebut dapat disebut (digunakan) oleh pengendali event atau subrutin dalam unit yang sama yang didefinisikan setelahnya.
Catatan: klausa penggunaan suatu unit memberi tahu Anda unit mana yang dapat dipanggil. Jika kita ingin subrutin tertentu dalam Unit1 dapat digunakan oleh penangan acara atau subrutin di unit lain (katakanlah Unit2), kita harus:
- Tambahkan Unit1 ke klausa penggunaan Unit2
- Tempatkan salinan tajuk subrutin di bagian antarmuka Unit1.
Ini berarti bahwa subrutin yang headernya diberikan di bagian antarmuka dalam lingkup global.
Ketika kita memanggil fungsi (atau prosedur) di dalam unitnya sendiri, kita menggunakan namanya dengan apa pun parameter dibutuhkan. Di sisi lain, jika kita memanggil subrutin global (didefinisikan dalam beberapa unit lain, mis. MyUnit) kami menggunakan nama unit yang diikuti oleh suatu periode.
... // Prosedur SayHello didefinisikan di dalam unit ini
SayHello ('Pengguna Delphi'); // Fungsi YearsOld didefinisikan di dalam unit MyUnit
Dummy: = MyUnit. YearsOld (1973);...
Catatan: fungsi atau prosedur dapat memiliki subrutin mereka sendiri yang tertanam di dalamnya. Subrutin tertanam adalah lokal untuk subrutin wadah dan tidak dapat digunakan oleh bagian lain dari program. Sesuatu seperti:
prosedur TForm1.Button1Click (Pengirim: TObject); fungsi Kecil(const sStr:tali): boolean; mulai// IsSmall mengembalikan True jika sStr dalam huruf kecil, False sebaliknya
Hasil: = LowerCase (sStr) = sStr; akhir; mulai// IsSmall hanya dapat digunakan di dalam acara Button1 OnClickjika IsSmall (Edit1.Text) kemudian
ShowMessage ('Semua huruf kecil di Edit1.Text')
lain
ShowMessage ('Tidak semua huruf kecil di Edit1.Text'); akhir;