Arsip: Function gak ngembaliin nilai ??? tanya kenapa
                
                   more 19 years ago
                  
              Manz
Nah, aku nanya lagi :
langsung dech daripada lieur :
                
var
  min: word;
  t_o: real;
begin
... bla bla bla
   if (min <> 0) then t_o := t_o + getminutes(min);
end;
function TDataModule3.GetMinutes(min: Real) : Real;
var
  sql : string;
begin
  sql := 'select min_calc from reff_minute ' +
         'where ' + floattostr(min) + ' between min_from and min_until';
  ibdataset1.SelectSQL.Clear;
  ibdataset1.SelectSQL.Add(sql);
  ibdataset1.Active := true;
  getminutes := ibdataset1.FieldByName('min_calc').AsFloat;
  ibdataset1.Active := false;
end;
nah, disitu nilai t_o = 14 dan nilai min = 30;
fungsi getminutes mentranslate dari :
1..15 jadi 0.25
16..30 jadi 0.5
31..45 jadi 0.75
46..59 jadi 1
kalo di trace di getminutes := ibdataset1.fieldbyname('min_calc').asfloat
itu hasilnya 0.5 karena nilai min nya 30.
tapi kenapa begitu balik ke pemanggil :
t_o := t_o + getminutes(min); 
koq, t_o nya gak 14.5 ya  :? 
untuk min type datanya word, karena hasil dari decodetime
kumahaaaa ???  :?
                
                   more 19 years ago
                  
              kaka-delphi
Coba di trace di pemanggilnya yang :
                t_o := t_o + getminutes(min);
di baypass dulu berapa nilainya yang di kembalikan,misal dengan ShowMessage();
ShowMessage(FloatToStr(getminutes(min))); apa bener hasilnya 0.5 .. :D
Coba ganti keywordnya untuk pengembalian nilai dengan keyword "Result",
Result := ibdataset1.FieldByName('min_calc').AsFloat; kalee aja ... :lol:
oia, sekedar saran saja, sebaiknya penamaan variable dan parameter fungsi dibedakan saja, ini menghindari dari bug yang mungkin akan menyulitkan. Contoh dari source diatas :
var 
  min: word;
....
function TDataModule3.GetMinutes(min: Real) : Real;
                
                   more 19 years ago
                  
                
              Manz
ShowMessage(FloatToStr(getminutes(min)));
bener hasilnya 0.5
tapi begitu nyampe t_o, tetep hasilnya 14, ngak 14.5 ..... :(
@kaka-delphi: sekedar saran saja, sebaiknya penamaan variable dan parameter fungsi dibedakan saja, ini menghindari dari bug yang mungkin akan menyulitkansarannya diterima ... :)
                
                   more 19 years ago
                  
              _aa_
kalau code nya persis seperti diatas (dan optimization ON)
debugger tidak bakal mau repot-repot nge-trak nilai t_o karena tidak digunakan (dead-code)
coba tambah misalnya showmesage(floattoStr(t_o)) sebelum end
                
                
                   more 19 years ago
                  
              kingstoneboy
Iya, setuju.... coba trace aja pake showmessage dulu. Kalo gak bisa, coba ganti 
getminutes := ibdataset1.FieldByName('min_calc').AsFloat; jadi result:=ibdataset1.FieldByName('min_calc').AsFloat;
Moga manfaat  :lol: [/pas]
                
                
                   more 19 years ago
                  
              Manz
hihihi, semuanya udah dicobain
kalo showmessage pasti keluar 0.5 nya
tapi pas tracing di t_o nya, tetep gak mau hasilnya tetep 14
kan lieur
                
                
                   more 19 years ago
                  
              deLogic
bisa disajikan listing lengkapnya? jangan2 ada statement yg kelewat.. atau coba dcu unit Anda nya di hapus.
                
                
                   more 19 years ago
                  
              Manz
list diawal forum ini sudah lengkap, justru permasalahannya adalah di :
                
begin
... bla bla bla
   if (min <> 0) then t_o := t_o + getminutes(min);
end;
dan memang untuk ini diletakkan di line terakhir. karena untuk bla bla bla nya kepanjangan :D
.dcu dihapus ??? apa gak jadi masalah nantinya pada saat loading ?
                
                   more 19 years ago
                  
              kifmesoft
kalo gitu .... bagian itu saja ... tulis dengan lengkap... ;)
(kepanjangan nggak apa-apa asal rapi....)
(semakin panjang code... semakin memungkinkan munculnya bug..)
                
                
                   more 19 years ago
                  
              Manz
ini satu block untuk ngitung t_o :
                
var
  ot_begin, ot_finish, work_start, work_finish: tdatetime;
  td: extended;
  hd: int64;
begin
  ot_begin := strtodatetime(fm_absence.cxGridDBTableView1OT_TIME_START.editvalue);
  ot_finish := strtodatetime(fm_absence.cxGridDBTableView1OT_TIME_FINISH.editvalue);
  work_start := sh_begin;
  work_finish := sh_finish;
  if (ot_begin < sh_begin) then work_start := ot_begin;
  if (ot_finish > sh_finish) then work_finish := ot_finish;
  td := abs(work_finish - work_start);
  decodetime(td, h, min, s, msec);
  hd := (24 * trunc(td)) + h;
  t_o := hd;
  if (min <> 0) then t_o := t_o + getminutes(min);
end;
function TDataModule3.GetMinutes(min: Real) : Real;
var
  sql : string;
 
begin
  sql := 'select min_calc from reff_minute ' +
         'where ' + floattostr(min) + ' between min_from and min_until';
  ibdataset1.SelectSQL.Clear;
  ibdataset1.SelectSQL.Add(sql);
  ibdataset1.Active := true;
  getminutes := ibdataset1.FieldByName('min_calc').AsFloat;
  ibdataset1.Active := false;
end;
apa karena t_o (real) di assign sama hd (int64) jadi kagak bisa ?  :? 
kalo gitu, gimana caranya casting dari int64 biar jadi real  :wink:more ...
              - Pages:
 - 1
 - 2
 
                    
                     reply  |
                     Report Obsolete
                  
                AI Forward
            
🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: 
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 5 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
 - Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 13 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 13 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 13 years ago 
Random Topic
- Pemula minta tolong....!!
by bocahklaten in Hal umum tentang Pascal Indonesia more 17 years ago - Form ajaib
by EkoIndri in Form Enhancement & Graphical Controls more 19 years ago - Path pada database delphi ?
by jajang in Tip n Trik Pemrograman more 17 years ago - Save beberapa item listbox ke tabel
by mysweetaurel in Lain-lain more 17 years ago - searching database...
by bianchi in Paradox more 17 years ago - Cara Buat Repeat di TMedia Player
by mrzie05 in Multimedia & Graphic Enhancement more 16 years ago - convert string 10,000 ke integer 10000
by oncom in Tip n Trik Pemrograman more 16 years ago - cara conversi table di access ke mysql
by wong_error in MySQL more 18 years ago - tolong judul TA yang bermanfaat dong!!!
by galfa in Enginering more 15 years ago - dbgrid yang lumayan komplet
by mbahdien in OpenSource dan Gratis more 17 years ago