04-10-2019, Saat: 17:34
Hayırlı akşamlar aşağıdaki kodlar ile personel yıllık izin hakedişini hesaplatabiliyorum. Bunun daha kolay ve kısa bir yolu varmı acaba ?
edit1.text = işe giriş tarihi
edit1.text = işe giriş tarihi
procedure TForm1.Button1Click(Sender: TObject); var tarih, tarih1,tarih2 : TDate; GYil, GAy, GGun : Word; GYil1, GAy1, GGun1 : Word; GYil2, GAy2, GGun2 : Word; begin tarih1 := Now; tarih2 := StrToDate(edit1.text); DecodeDate(tarih1, GYil1, GAy1, GGun1); DecodeDate(tarih2, GYil2, GAy2, GGun2); kidem := GYil1 - GYil2; sedit4.text := inttostr(kidem); case kidem of 1..5 : ilkkademe; 6..15 : ikincikademe; 16..90 : ücüncükademe; end; end; procedure TForm1.ilkkademe; var tarih : TDate; GYilb,GYila, GAya, GGuna : Word; begin if (kidem >= 1) and (kidem <= 5) then begin for i := 1 to kidem do begin Memo1.Lines.Add('14'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + i; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; end; end; procedure TForm1.ikincikademe; var kad1 ,kad2,sayi : Integer; tarih : TDate; GYilb,GYila, GAya, GGuna : Word; begin if (kidem >= 6) and (kidem <= 15) then begin for i := 6 to kidem do begin Memo1.Lines.Add('20'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + i; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; sayi := memo1.Lines.Count; kad1 := Trunc(sayi/2); kad2 := kidem - kad1; for k := 1 to kad2 do begin Memo1.Lines.Add('14'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + k; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; end; end; procedure TForm1.ücüncükademe; var kad1 ,kad2,kad3,kad4,sayi,sayi1 : Integer; tarih : TDate; GYilb,GYila, GAya, GGuna : Word; begin if (kidem >= 16) and (kidem <= 90) then begin for i := 16 to kidem do begin Memo1.Lines.Add('26'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + i; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; sayi := memo1.Lines.Count; kad1 := Trunc(sayi/2); kad2 := kidem - kad1; for k := 6 to kad2 do begin Memo1.Lines.Add('20'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + k; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; sayi1 := memo1.Lines.Count; kad4 := Trunc(sayi1/2); kad3 := kidem - kad4; for j := 1 to kad3 do begin Memo1.Lines.Add('14'); tarih := StrToDate(edit1.text); DecodeDate(tarih, GYila, GAya, GGuna); GYilb := GYila + j; Memo1.Lines.Add(DateToStr(EncodeDate (GYilb, GAya, GGuna))); end; end; end;