- Yoğunluk yaşadığınızı değerlendiriyorum. Ben de Visual Basic bilmiyor olmama rağmen her programlama dilindeki ortak dil olan matematik kullanılarak verilmiş bir fonksiyon olduğundan kendimce çözüm ürettim. Deneyip sonucu yazınız...
- Formunuza bir
TListBox (
ListBox1) ve (4) adet de TEdit (
Edit1, Edit2, Edit3 ve Edit4) koyun.
Kod: Tümünü seç
Edit1 : Alacak Tutar
Edit2 : Vade Tarihi
Edit3 : Takip Tarihi
Edit4 : Hesap sonucu elde edilecek faizlendirilmiş rakam
olacak..
- LitsBox1'in içerisini aşağıdaki gibi doldurun... Tarih ve yanına bir virgül koyup o tarihe ait faiz oranı şeklinde. Bu ikili değerleri değerlendirilip faizlendirilmiş sonuç çıkartıcaz...
Kod: Tümünü seç
01.01.2000,70
01.06.2002,60
01.06.2003,45
01.06.2004,35
01.06.2005,15
01.06.2006,7
// Fonksiyonumuz şu şekilde...
Kod: Tümünü seç
Function Hesapla( TarihveYasalFaizOranlari : TStrings; Tutar:Currency; BasTar, SonTar:TDate):Real;
Var
j : Integer;
Faiz, FaizOr : Real;
TmpBasTar, FaizTar : TDate;
Devam : Boolean;
begin
FaizTar := UnAssigned;
TmpBasTar := BasTar;
j := -1;
Faiz := 0;
Devam := True;
While Devam do begin
Inc(j);
If j < TarihveYasalFaizOranlari.Count
then FaizTar := StrToDate ( Trim(Copy(TarihveYasalFaizOranlari[j], 1, Pos(',', TarihveYasalFaizOranlari[j])-1) ) );
If (j = TarihveYasalFaizOranlari.Count) or (FaizTar > sontar) then begin
FaizTar := sontar;
devam := False;
end;
If BasTar < FaizTar Then begin
FaizOr := StrToFloat( Trim(Copy(TarihveYasalFaizOranlari[j-1], Pos(',', TarihveYasalFaizOranlari[j-1])+1, 99999) ));
Faiz := Faiz + ((FaizTar - TmpBasTar) * Tutar * FaizOr) / 36500;
TmpBasTar := FaizTar;
end;
end; // While
Result := Faiz;
end;
- Kullanımı işe şöyle olacak...
Kod: Tümünü seç
Edit4.Text := Format('%.2f', [ Hesapla( ListBox1.Items, StrToCurr(Edit1.Text), StrToDate(Edit2.Text), StrToDate(Edit3.Text)) ] );
- Umarım çözüm olur...