VD to Delphi- Yardım

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

VD to Delphi- Yardım

Mesaj gönderen adnansirca »

Kod: Tümünü seç

Sub hesapla()

k = 4

Do While Cells(k, 8) <> ""
    tutar = Cells(k, 8)
    bastar = Cells(k, 9)
    sontar = Cells(k, 10)
    tmpbastar = bastar
    j = 4
    faiz = 0
    devam = True
    Do Until devam = False
        faiztar = Cells(j, 3)
        If Cells(j, 3) = "" Or faiztar > sontar Then faiztar = sontar: devam = False
        If bastar > faiztar Or bastar = faiztar Then GoTo 20
        faizor = Cells(j - 1, 4)
        
        faiz = faiz + ((faiztar - tmpbastar) * tutar * faizor) / 36500
        
        tmpbastar = faiztar
20
        j = j + 1
    Loop
    Cells(k, 11) = faiz
    k = k + 1:   faiz = 0
Loop

End Sub

Bu kod excelde hazırlanmış ve kademeli faiz hesabı yapıyor. Bunu delphiye uyarlayabilir misiniz benim için. vb ile ilgili hiç bir bilgim yok. mantığını kuramadım. Sizdlerden yardım bekliyorum...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Excel dosyası için de bir link verseydin sonucun doğruluğunu test etme imkanımız olurdu...
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- 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...
Resim
Resim ....Resim
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

Mesaj gönderen adnansirca »

Sayın mrmarman ilginiz için teşekküğr ederim. erken çıkmam sebebiyle yanıtınızı bugün gördüm. Birazdan deneyeceğim. Macroyu bir siteden almıştım. Kademeli faiz hesabı yapıyor.
Dosya linki : http://www.excel.web.tr/attachment.php? ... 1168784344

Site üyelik gerektiriyor. Bu nedenle size üye adı ve şifremi de veriyorum. Üye [edit] şifre [edit]

Yazdıklarınızı şimdi deneyecem ...
Saygılarımla


aslangeri
NOT: Şifrelerinizi vs. özel mesaj yolu ile gönderin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- @aslangeri haklı açıkça şifre vermek adına sakıncalı. Şifreni görecek zamanım olmadı ancak verdiğin link için kendim yenibaştan üye oldum ve dosyayı indirdim. Ancak içeriğinde sadece soru var Makro yok... Yani sonucu değerlendirecek ortam bulamadım.

- Sorudaki gibi bir kurgu için daha önce rastegele dolduruğum ListBox'u aşağıdaki şekilde doldur ve öyle dene...

Kod: Tümünü seç

01.01.2000,60
01.07.2002,55
01.07.2003,50
01.01.2004,43
01.07.2004,38
01.05.2005,12
01.01.2006,9
Resim
Resim ....Resim
adnansirca
Üye
Mesajlar: 135
Kayıt: 14 Kas 2005 12:24

Mesaj gönderen adnansirca »

Özür dileyerek başlayalım... Forum kurallarını bazen unutuyoruz. Sayın mrmarman ın cevabını görünce hızlıca yanıt verelim dedik.

Hocam yanıtınız için teşekkür ederim. Kod çalışıyor. Bu sitede daha evvelden kademeli faiz ile ilgili bir çok sorum olmuştu ancak net bir cevap alamamıştım. Araştırdım ve vb kodunu buldum ve buraya mesaj attım. Ve 2 yıl sonra sorunsuz çalışan delphi kodunu sayın mrmarman bize bahşetti.
Teşekkür ederim...
Saygılarımla................
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Sevindim.. 8)

Çalışmalarında başarılar...
Resim
Resim ....Resim
mdemir
Üye
Mesajlar: 1
Kayıt: 07 Mar 2008 04:46

Re: VD to Delphi- Yardım

Mesaj gönderen mdemir »

Merhaba Benim sorum şu olacak.
elimizde aşagıdaki faiz oranları var. Ve biz tam aylar için aylık eksik kalan aylar içinde gün sayısı kadar faiz uygulamak istersek. fonksiyonda nasıl bir düzeltme yapmalıyız.
Örnek.
ana para: 106.75
vade 21.04.2006
tutar= ?

01.01.1990 7
01.01.1994 12
01.04.1994 12
01.09.1995 10
01.02.1996 15
01.07.1998 12
01.01.2000 6
01.12.2000 5
01.03.2001 10
01.01.2002 7
01.10.2003 4
02.03.2005 3
21.04.2006 2,5
Cevapla