Debugging dan Exception

2.4. Debugging dan Exception

Ketika kita menjalankan program dari Delphi IDE (misalnya dengan menekan tombol F9), berarti kita menjalankan program tersebut dalam metode Delphi debugger. Ketika terjadi error, maka program akan berhenti dan menunjuk ke baris di mana terjadi error. Hal ini merupakan hal yang normal sesuai dengan kebutuhan kita akan fasilitas debugger.

Tetapi ketika kita jalankan contoh program untuk menjalankan exception di atas, kita mungkin akan sedikit bingung dengan berhentinya program pada baris di mana terjadi exception.

Bila kita ingin tahu apakah exception tersebut sudah tertangani dengan benar, kita dapat menjalankan file

exe‐ nya melalui Window Explorer. Atau kita dapat mematikan secara sementara Stop on Delphi

Exception yang dapat kita tampilkan dari menu Tools – Debugger Option pada page Language Exception, seperti tampak pada gambar berikut ini.

Gambar 3‐ 2. Debugger Options

2.5. Class Reference

Variabel bertipe class reference adalah variabel yang mengacu kepada definisi dari kelas tersebut. Variabel jenis ini dapat digunakan bila kita ingin memanggil class method atau constructor dari suatu kelas melalui variabel. Perlu diingat bahwa variabel class reference bukanlah variabel bertipe objek, tetapi variabel yang mengacu kepada tipe kelas. Perhatikan contoh berikut ini.

Kita mempunyai sebuah kelas dengan tipe TMyClass. Selanjutnya kita definisikan sebuah class reference dengan nama TMyClassRef, sebagai berikut :

type

TMyClassRef = class of TMyClass;

Page 64

Selanjutnya kita dapat mendefinisikan sebuah variabel dengan tipe class reference sebagai berikut ini.

var AnObject : TMyClass; // variabel bertipe objek AClassRef : TMyClassRef; // variabel bertipe class reference

begin AnObject := TMyClass.Create; // variabel bertipe objek

// dapat di-assign dengan instance dari objek tersebut

AClassRef := TMyClass; // variabel bertipe class reference

// harus di-assign dengan tipe kelas …

Kita dapat memanggil class method ataupun constructor melalui variabel yang sudah kita definisikan di atas dengan contoh sebagai berikut :

AnObject := AClassRef.Create;

Delphi menyediakan banyak sekali class reference diantaranya : TClass = class of TObject;

TComponentClass = class of TComponent; TFormClass = class of TForm;

Page 65

Bab ini membahas tentang penerapan dari uraian‐ uraian yang tercantum dalam bab 2 dan bab 3 dalam tiga buah contoh program.

La t iha n 0 1 : Aplik a si Se de rha na

Pada latihan ini kita membuat sebuah program kalkulator sederhana.

1. Mulailah dengan meng‐ klik pada menu File ‐ > New Application.

2. Selanjutnya kita mendesain tampilan aplikasi. Delphi menyediakan sebuah form Designer kosong untuk kita gunakan dalam mendesain aplikasi, gunakan juga Component Palette untuk mengambil komponen yang dibutuhkan, dan desainlah sebagai berikut dengan menggunakan Object Inspector :

3. Sekarang kita melengkapi property komponen. Pada Object Inspector lakukan pengaturan property menurut tabel berikut ini :

Komponen

Property

Value

Form1

Caption

Latihan

Label1

Caption

Data 1

Label2

Caption

Data 2

Label3

Caption

Hasil

Edit1

Name

EdData1

Text

Page 66

4. Sehingga menghasilkan tampilan seperti ini :

5. Menggunakan Event yang sesuai untuk menuliskan perintah program, untuk program kali ini kita hanya menggunakan Event onClick pada tombol [Kali] dan tombol [Selesai]. Caranya mudah, klik 2x pada tombol [Kali], sehingga Delphi menunjukkan kita lokasi untuk pengetikan pada Unit Editor sebagai berikut ini :

procedure TForm1.Button1Click(Sender : TObject);

begin

EdHasil.Text := FloatToStr(StrToFloat(EdData1.Text) *

StrToFloat(EdData2.Text));

end;

6. Gunakan cara yang sama untuk tombol [Selesai], klik 2x pada tombol tersebut, lalu ketikkan sebagai berikut :

procedure TForm1.Button2Click(Sender : TObject);

7. Simpan aplikasi yang kita buat dengan cara meng‐ klik menu File ‐ > Save All. Berturut‐ turut Delphi akan meminta nama file untuk menyimpan Unit dan dilanjutkan dengan meminta nama file untuk menyimpan Project. Simpanlah nama unit Anda dengan “Ulatihan01” dan project Anda dengan nama

“Platihan01”.

Page 67

8. Selesai melakukan penyimpanan, kita lanjutkan dengan melakukan kompilasi sekaligus menjalankan program. Adapun caranya melalui menu Run ‐ > Run.

La t iha n 0 2 : M e nggu na k a n K ondisiona l

Pada latihan kali ini kita akan membuat sebuah program perhitungan nilai mahasiswa. Dalam hal ini, input program adalah nilai‐ nilai UTS dan UAS, output program berupa grade nilai dalam abjad A, B, C, D, atau E.

1. Mulailah dengan meng‐ klik pada menu File ‐ > New ‐ > Application.

2. Pada Form Designer, dengan menggunakan komponen dari palette standard, berikut ini :

Desainlah form Anda seperti ini :

3. Aturlah property tiap komponen dengan mengikuti tabel berikut :

Font.Style.fsBold

Font.Style.fsBold

Font.Style.fsBold

True

Label1

Caption

UTS 1

Label2

Caption

UTS 2

Page 68

Hasil akhir desain Anda akan menjadi seperti di bawah ini :

4. Untuk menuliskan skrip program, Anda harus meng‐ klik 2x pada tombol [Hitung], lalu ketikkan listing di bawah ini :

procedure TForm1.Button1Click(Sender : TObject); var uts1, uts2, uas, na : real;

b1, b2, b3 : real; grade : string;

begin

//……mengambil data nilai…….. uts1 := StrToFloat (Edit1.Text); uts2 := StrToFloat (Edit2.Text); uas := StrToFloat (Edit3.Text);

//…..mengambil data persen bobot…. na := uts1*b1 + uts2*2 + uas*3; //…..menentukan grade nilai….. if (na >= 80) then grade := ‘A’ else if (na >= 60) and (na < 80) then grade := ‘B’ else if (na >= 60) and (na < 70) then grade := ‘C’ else if (na >= 50) and (na < 60) then grade := ‘D’

else

grade := ‘E’;

Page 69

//…..menampilkan output……. Edit7.Text := FloatToStr(na); Edit8.Text := grade;

end;

5. Dan skrip terakhir, Anda lakukan klik 2x pada tombol [Selesai], lalu ketikkanlah :

procedure TForm1.Button2Click (Sender : TObject);

6. Simpanlah program dengan nama unit “Ulatihan02” dan nama Project “Latihan02”.

7. Kompilasi program Anda dengan menggunakan menu Run ‐ > Run.

La t iha n 0 3 : M e ngguna k a n I t e ra si

Latihan kali ini adalah membuat program yang mengilustrasikan cara melakukan perhitungan secara berulang/iterasi. Untuk contoh, kita menggunakan perhitungan yang sangat familiar yaitu perhitungan trigonometri.

1. Mulailah dengan meng‐ klik pada Menu File ‐ > New ‐ > Application.

2. Pada Form designer, dengan menggunakan komponen dari Palette Standard dan Palette Additional berikut :

Page 70 Page 70

3. Klik 2x pada komponen chart1, lalu pada dialog editing chart1, tambahkan data series1 :

4. Aturlah property tiap komponen dengan mengikuti tabel berikut :

Data Input

Font.Style.fsBold

Sudut Awal

Label2

Caption

Jumlah Data

Label3

Caption

Interval

Label4

Caption

Total

Label5

Caption

Grade

Edit1

Text

Edit2

Text

Edit3

Text

Button1

Caption

Sinus

Button2

Caption

Cosinus

Button3

Caption

Selesai

Page 71

5. Dalam latihan kali ini, kita menggunakan beberapa variabel yang bersifat global, artinya dapat digunakan pada semua procedure yang berada di dalam unit latihan ini. Maka deklarasi variabel harus Anda letakkan sebagai berikut :

private

( Private declarations )

public

( Public declarations )

end; var

Form1 : TForm1; I, ndat : integer; teta0, step : real; ceksin : Boolean; x, y : array [0..360] of real;

6. Untuk menuliskan skrip perintah program, klik 2x pada tombol [Sinus], lalu ketiklah :

procedure TForm1.Button1Click (Sender : TObject);

begin

teta0 := StrToFloat (Edit1.Text); ndat := StrToInt (Edit2.Text); step := StrToFloat (Edit3.Text); Series1.Clear; x[0] := teta0; for i := 0 to ndat do

begin

y[i] := sin(x[i]*3.14/180); Series1.AddXY( x[i],y[i] , ‘ ‘ , clRed ); X[i+1] := x[i] * step;

end;

Chart1.Title.Text.Clear; Chart1.Title.Text.Add(‘Grafik Trigonometri’); Chart1.Title.Font.Style := [fsBold]; Chart1.LeftAxis.Title.Caption := ‘Nilai Sinus’; ceksin := True; UpdateValue; //User define procedure

end;

7. Kemudian klik 2x pada tombol [Cosinus], lalu ketikkan :

procedure TForm1.Button2Click (Sender : TObject);

begin

teta0 := StrToFloat (Edit1.Text); ndat := StrToInt (Edit2.Text); step := StrToFloat (Edit3.Text); Series1.Clear; x[0] := teta0; for i := 0 to ndat do

begin

y[i] := cos(x[i]*3.14/180); Series1.AddXY( x[i],y[i] , ‘ ‘ , clRed ); X[i+1] := x[i] * step;

Page 72 Page 72

Chart1.Title.Text.Clear; Chart1.Title.Text.Add(‘Grafik Trigonometri’); Chart1.Title.Font.Style := [fsBold]; Chart1.LeftAxis.Title.Caption := ‘Nilai Cosinus’; ceksin := True; UpdateValue; //User define procedure

end;

8. Pada latihan kali ini kita juga membuat sebuah user define procedure (prosedur sendiri), yang kita tempatkan sebelum posisi end terakhir dari unit. Ketikkan sintaks berikut :

procedure TForm1.UpdateValue;

var

I : integer;

begin

StringGrid1.ColCount := 3; StringGrid1.RowCount := ndat+1; StringGrid1.Cells[0,0] := ‘ 1 ‘; StringGrid1.Cells[1,0] := ‘X ( i )’; StringGrid1.Cells[2,0] := ‘Y ( i )’; x[ 0 ]:= teta0; for i := 0 to ndat do

begin

if ceksin then y [ i ] := sin(x [ i ]*3.14/180)

else

y [ i ] := cos(x [ i ]*3.14/180); x[i+1] := x[i] + step StringGrid1.Cells[0, i+1] := IntToStr(i); StringGrid1.Cells[1, i+1] := FloatToStr(x[i]); StringGrid1.Cells[2, i+1] := formatFloat(‘#0.000’, y[i]);

end;

end ; agar unit mengenalnya, perhatikan cara penulisannya dan letakkan header procedure tersebut pada

barisan deklarasi berikut :

procedure Button2Click ( Sender : TObject ); procedure Button3Click ( Sender : TObject ); procedure UpdateValue;

private

( Private declarations )

public

( Public declarations )

end;

9. Lalu terakhir, klik 2x pada tombol [Selesai], dan ketiklah :

procedure TForm1.Button3.Click ( Sendet : TObject );

begin

Close;

end;

Page 73

10. Simpan program Anda, dengan nama unit “Ulatihan03” dan nama Project “Latihan03”. Lalu jalankan dengan menekan F9, sehingga Anda akan diperoleh hasil sebagai berikut :

Page 74

Aplikasi database memungkinkan user berinteraksi dengan informasi yang tersimpan dalam sebuah database. Tidak seperti bahasa pemrograman yang lain, Delphi memberikan banyak pilihan teknologi kepada Software Engineer dalam membangun dan mengembangkan aplikasi database. Dengan banyaknya pilihan tersebut, Software Engineer dapat mengembangkan aplikasi dengan mekanisme akses data yang paling tepat menurut kebutuhan.