Delphi 7 – CASE..OF dengan text


Daftar Isi


Lihat contoh kasus konversi nilai angka ke huruf. Skenario yang terjadi adalah bila saya mengisi nilai pada edit teks lalu menekan tombol konversi nilai maka nilai pada label akan muncul sesuai ketentuan yang dibuat

procedure TForm1.btn1Click(Sender: TObject);
  var
    angka:integer;
    huruf:string;
begin 
  angka:=StrToInt(edt1.Text);
  case angka of
    0..25 :huruf:='E';
    26..40 : huruf:='D';
    41..60 : huruf:='C';
    61..80 : huruf:='B';
    81..100 : huruf:='A';
  else
    huruf:='T';
  end;  
  label2.Caption:=huruf;
end.

Syarat case..of :

nilai variabel angka tidak dapat diganti menjadi string walau type data nya sudah diganti jadi string

Jangan galau dengan masalah ini, saya menemukan satu cara mentuk menyelesaikan masalah ini, yakni dengan menggunakan array sebagai peng-index string yang dibuat.

contoh kasus anak dihubungkan ke alamat masing-masing.

Langkah pertama buat fungsi untuk mengindexkan tiap baris of case dalam array lihat script dibawah

{$R *.dfm}
function CoS(s:string; a:array of string):integer;
begin
  Result:=0;
  while (Result < Length(a))and (a[Result]<>s)do
    Inc(Result);
    if a[Result]<>s then
      Result:=-1;
end;

Langkah kedua buat tombol yang menggunak fungsi yang tadi di buat untuk menjalankan case of lihat script dibawah

procedure TForm1.btn1Click(Sender: TObject);
var
  nama,alamat:string;
begin
  nama:=cbb1.Text;
  case CoS(nama,['BUDI','ADI','AYU','AHMAD','RIA']) of
    0:alamat:='alamat rumah Budi';
    1:alamat:='alamat rumah Adi';
    2:alamat:='alamat rumah Ayu';
    3:alamat:='alamat rumah Ahmad';
    4:alamat:='alamat rumah Ria';
  end;
  label2.Caption:=alamat;
end;
Catatan:
contoh tersebut hanya agar dapat dengan mudah dimengerti walaupu sebenarnya untuk menentukan nilai case dari ComboBox dapat ditentukan dengan merujuk pada item index dari masing-masing item pada ComboBox tersebut Lihat kode berikut:
procedure TForm1.btn1Click(Sender: TObject);
var
  nama:Integer;
  alamat:string;
begin
  nama:=cbb1.ItemIndex;
  case nama of
    0:alamat:='alamat rumah Budi';
    1:alamat:='alamat rumah Adi';
    2:alamat:='alamat rumah Ayu';
    3:alamat:='alamat rumah Ahmad';
    4:alamat:='alamat rumah Ria';
  end;
  label2.Caption:=alamat;
end;

Tinggalkan komentar