Arsip: function atau procedure dgn jumlah parameter fleksibel
more 17 years ago
mas_kofa
sebelumnya......... saya mengucapkan selamat berpuasa bagi yang berpuasa kepada semua admin, momod,member , dan pengunjung forum....
sesudahnya..........ada yang ingin saya tanyakn...
gimana ya caranya membuat suatu procedure atau function yang mempunyai jumlah parameter dinamis (sembarang).......
contoh kasus
function tambah(a,b:integer):integer;
begin
result := a + b;
end;
dari function di atas kita hanya bisa memasukan dua parameeter (tdk bisa kurang / lebih)....
pertanyaannya gmn.......caranya mendeklarasikan.. suatu procedure atau function dengan jumlah parameter fleksibel.....spt ini
x := tambah(12,23);
y := tambah(23,34,56,67,89);
z := tambah(23);
untuk mengakali hal di atas sementara saya memakai satu parameter ber-type string;
x := tambah('12,23');
y := tambah('23,34,56,67,89');
z := tambah('23');
atas pencerahannya . ....hatur nuhun pisan.........(dibaca : matur nuwun sanget, dalam hati : terimaksih banyak)
more 17 years ago
coblongpamor
Bagaimana kalo pake array dinamis...?
function Tambah(vBil:array of Integer):Integer;
var
i:integer;
begin
Result:=0;
for i:=Low(vBil) to High(vBil) do
Result:=Result+vBil[i];
end;
x:=Tambah([10,12,15]);
Semoga membantu..
more 17 years ago
mas_kofa
x:=Tambah([10,12,15]);mending pake string mas...... x := tambah('10,12,15');
more 17 years ago
coblongpamor
Klo pake string, kita harus memilah-milah lagi angka -angka dalam setring yg dipisahkan oleh koma(apa gak ribet..?).
tapi gak masalah sih..., toh hasilnya sesuai dengan yg diharapkan..
more 17 years ago
_lmz
@mas_kofa:Kalau sudah memenuhi kebutuhan anda sih tidak apa-apa. Tapi menurut saya lebih baik pakai array of... karena lebih fleksibel dan lebih banyak pengecekan yang dilakukan saat kompilasi. Contoh: x := tambah('10,abcd,15'); // ==> Exception x := tambah([10,abcd,15]); // ==> Error saat kompilasi (kecuali abcd nama variabel integer) x := tambah('10,1+23,15'); // ==> Susah u/ dibuat x := tambah([10,1+2 3,15]); // ==> Mungkin sekali jalanx:=Tambah([10,12,15]);mending pake string mas...... x := tambah('10,12,15');
more 17 years ago
bagussb
wah.. menarik juga nih... :mrgreen:
untuk yang menggunakan array saya setuju banget, ketimbang menggunakan tipe data string
yang harus kita parsing dulu... tentunya prosesnya jadi aga lama..
tapi temen2 semua pernah merhatiin procedure WriteLn bawaannya delphi ngga ?
itu kan variabel yang dia terima bisa banyak banget plus variatif :
contohnya
var
s: TextFile;
begin
AssignFile(s,'c:\test.txt');
Rewrite(s);
Writeln(s,'test');
Writeln(s,'test1','test2');
Writeln(s,'test1','test2','test3');
CloseFile(s);
end;
procedure ini bisa terima variable 2, 3, 4 atopun 10...
mmmm.. gimana yah caranya...
more 17 years ago
_lmz
@bagussb: tapi temen2 semua pernah merhatiin procedure WriteLn bawaannya delphi ngga ? itu kan variabel yang dia terima bisa banyak banget plus variatif :Writeln adalah "unik" karena merupakan bawaan dari Pascal dan bersifat built-in (termasuk dalam definisi bahasa). Setahu saya tidak ada cara untuk membuat sesuatu yang menerima parameter seperti writeln dalam Pascal/Delphi. Sama seperti anda tidak dapat melakukan passing variabel bertipe file secara pass-by-value, dsb. Ada tembok antara apa yang disediakan oleh bahasa dan apa yang dapat dilakukan oleh programmer. Hal ini tidak seperti C di mana fungsionalitas seperti I/O dasar pun disediakan oleh library.
more 17 years ago
reev
cara ini boleh juga kayaknya. Cuma terbatas di jumlah maksimal parameter.
Asumsikan saja jumlah paremeter maks. 10, jadi
function tambah(const nilai1, nilai2, ...... nilai10: integer = 0):Integer;
begin
Result:=0;
If nilai1<>0 then inc(result, nilai1);
//...............................................
If nilai10<>0 then inc(result, nilai10);
end;
Jadi kalau ada parameter
more 17 years ago
reminder2k1
Ge coba jawab ya???
Gw dah coba dan ternyata bisa & memuaskan.
Jadi intinya harus deklarasikan sebanyak mungkin procedure yang sama tapi dengan variabel yang berbeda, memang bakal banyak kerjaan sih, tapi emg harus spt itu kok... Dan jangan lupa di belakang setiap procedure harus di tambahkan keyword OVERLOAD, gw juga ga tau apa artinya keyword ini, tapi itu harus di tulis (mgkn ada yg bisa membantu fungsi dari keyword tsb :mrgreen: )
Contoh simplenya:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button2: TButton;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
b1,b2,b3,b4,b5,b6,hasil: extended;
public
{ Public declarations }
end;
function Tambah(Value1,Value2: Extended): Extended; overload;
function Tambah(Value1,Value2,Value3: Extended): Extended; overload;
function Tambah(Value1,Value2,Value3,Value4: Extended): Extended; overload;
function Tambah(Value1,Value2,Value3,Value4,Value5: Extended): Extended; overload;
function Tambah(Value1,Value2,Value3,Value4,Value5,Value6: Extended): Extended; overload;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Tambah(Value1,Value2: Extended): Extended; overload;
begin
Result:=Value1+Value2;
end;
function Tambah(Value1,Value2,Value3: Extended): Extended; overload;
begin
Result:=Value1+Value2+Value3;
end;
function Tambah(Value1,Value2,Value3,Value4: Extended): Extended; overload;
begin
Result:=Value1+Value2+Value3+Value4;
end;
function Tambah(Value1,Value2,Value3,Value4,Value5: Extended): Extended; overload;
begin
Result:=Value1+Value2+Value3+Value4+Value5;
end;
function Tambah(Value1,Value2,Value3,Value4,Value5,Value6: Extended): Extended; overload;
begin
Result:=Value1+Value2+Value3+Value4+Value6;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
b1:=StrToFloat(Edit1.Text);
b2:=StrToFloat(Edit2.Text);
hasil:=Tambah(b1,b2);
Edit3.Text:=FloatToStr(Hasil);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
b1:=StrToFloat(Edit4.Text);
b2:=StrToFloat(Edit5.Text);
b3:=StrToFloat(Edit6.Text);
b4:=StrToFloat(Edit7.Text);
b5:=StrToFloat(Edit8.Text);
hasil:=Tambah(b1,b2,b3,b4,b5);
Edit9.Text:=FloatToStr(Hasil);
end;
end.
Moga bisa bantu ya??? :)more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 4 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Help Me.....
by yuan_carlos in Hal umum tentang Pascal Indonesia more 17 years ago - [ask] gimana caranya: 1 Aplikasi hanya boleh running di 1 PC
by faisal801m in Tip n Trik Pemrograman more 13 years ago - [ask] penggunaan range pada isi record
by kepiss in Tutorial & Community Project more 12 years ago - format kytdbgrid - dbgridbelang
by javaman in Hal umum tentang Pascal Indonesia more 18 years ago - Inser tanggal selama 1 tahun
by delphi1st in Tip n Trik Pemrograman more 17 years ago - Mohon bantuan teman2
by grounders in Hal umum tentang Pascal Indonesia more 19 years ago - Deklarasi variable public
by ayocool in Hal umum tentang Pascal Indonesia more 18 years ago - Update, Insert n Delete VS Select....
by e_soep in Tip n Trik Pemrograman more 17 years ago - bikin installer delphi didalamnya udah ada mysql-nya
by lela in Hal umum tentang Pascal Indonesia more 18 years ago - membuat function untuk menuliskan data ke memo ???
by jajang in Tip n Trik Pemrograman more 15 years ago