Tarihe ay ekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ercanskose
Üye
Mesajlar: 62
Kayıt: 18 Eyl 2011 02:31

Tarihe ay ekleme

Mesaj gönderen ercanskose »

Arkadaşlar tarihe 6 ay eklemek istiyorum fakat daha önce delphi 7 de kullandığım kod 2010 da çalışmıyor.

fikri olan varmı.

verdiği hata.:

Kod: Tümünü seç

[DCC Error] Unit35.pas(206): E2250 There is no overloaded version of 'IncMonth' that can be called with these arguments
kullandığım kod.:

Kod: Tümünü seç

edit3.Text:=DateToStr(IncMonth (StrToDate(edit2.Text), StrToInt(edit4.Text)));
bu kod delphi 7 de çalışıyor.

yada başka bir yöntem bilen varmı. tarih fonksiyonlarıyla pek aram yok.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Tarihe ay ekleme

Mesaj gönderen xxxjedixxx »

Ben parametre hatası veriyor diye düşünüyorum.

IncMonth (StrToDate(edit2.Text), StrToInt(edit4.Text)) yerine

var tarih: TDateTime;

Tarih := StrToDate(edit2.Text);
IncMonth (Tarih, StrToInt(edit4.Text))

şeklinde değişken kullanarak dener misin? Bu da olmazsa ay parametresini de değişkene atıp deneyin.
ercanskose
Üye
Mesajlar: 62
Kayıt: 18 Eyl 2011 02:31

Re: Tarihe ay ekleme

Mesaj gönderen ercanskose »

hiç bir türlü çalışmıyor ne yapsam aynı hatayı alıyorum. procedure bile kullandım yine olmadı. bütün sorun bu incmonth ta.
ercanskose
Üye
Mesajlar: 62
Kayıt: 18 Eyl 2011 02:31

Re: Tarihe ay ekleme

Mesaj gönderen ercanskose »

incday çalışıyor.. sıkıntı yok ama incmonth çalışmıyor. en son çare tarihe 180 gün ekletecem. tam 6 ay sonrasını vermeyecek ama yapacak bişey yok.
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Tarihe ay ekleme

Mesaj gönderen tayipk »

merhaba tarihe 6 ay eklemek istiyorum demişsin yani 180 gün sana göstereceğim yol umarım işini çözecektir. önce formunda dateedit olduğunu varsayıyorum

Kod: Tümünü seç

dateedit1.date:=date+180
hepsi bu :) bunu istediğin kadar yapabilirsin şunuda yapabilirsin kullanıcına bir edite kaç ay eklemek istediğini sorarsın edite yazılan rakam*30 şeklindede devam edebilirsin. bunu bir dene olmazsa tekrar yardımcı olmaya çalışırım. kolay gelsin. birde şu siteye bakmanı tavsiye ederim belki işine yarayabilir birşeyler bulabilirsin.http://www.kodyaziyorum.com/printer_fri ... sp?TID=810
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Tarihe ay ekleme

Mesaj gönderen xxxjedixxx »

Sayın Tayipk'nın verdiği cevap pratik gibi görünse de maalesef IncMonth fonksiyonun karşılığı değildir.

IncMonth fonksiyonu tarihin üzerine Ay_Sayisi*30 kadar gün eklemez. Tarihi, ayların kaç gün olduğunu dikkate alarak hesaplar.

Örneğin; 30.05.2014 tarihine 6 ay eklersek;
IncMonth fonk. göre sonuç: 30.11.2014
180 gün eklenirse sonuç : 26.11.2014

Başka bir örnek; 01.02.2014 tarihine sadece 1 ay ekleyelim;
InchMonth sonucu: 01.03.2014
30 gün eklenirse : 03.03.2014

gibi çok farklı sonuçlar alınmaktadır.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Tarihe ay ekleme

Mesaj gönderen xxxjedixxx »

Aşağıdaki fonksiyonu dener misin?

Kod: Tümünü seç

function IncMonthX(pTarih: TDate; pAy: Byte): TDate;
var Yil, Ay, Gun: Word;
begin
  Result := pTarih; 
  if pAy = 0 then Exit;
  DecodeDate(pTarih, Yil, Ay, Gun);
  IncAMonth(Yil, Ay, Gun, pAy);
  Result := EncodeDate(Yil, Ay, Gun);
end;
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Tarihe ay ekleme

Mesaj gönderen mussimsek »

Bu fonksiyon başka bir unitte, farklı paremetrelerle çalışacak şekilde bir daha vardır. Başına unit ekleyerek çağır, DateUtils.IncMonth gibi.

Kolay gelsin.
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Tarihe ay ekleme

Mesaj gönderen tayipk »

xxxjedixxx yazdı:Sayın Tayipk'nın verdiği cevap pratik gibi görünse de maalesef IncMonth fonksiyonun karşılığı değildir.

IncMonth fonksiyonu tarihin üzerine Ay_Sayisi*30 kadar gün eklemez. Tarihi, ayların kaç gün olduğunu dikkate alarak hesaplar.

Örneğin; 30.05.2014 tarihine 6 ay eklersek;
IncMonth fonk. göre sonuç: 30.11.2014
180 gün eklenirse sonuç : 26.11.2014

Başka bir örnek; 01.02.2014 tarihine sadece 1 ay ekleyelim;
InchMonth sonucu: 01.03.2014
30 gün eklenirse : 03.03.2014

gibi çok farklı sonuçlar alınmaktadır.
cevabım için dediğin gibi doğrusunuz hocam Incmonth karşılığı bir cevap değil ben soruyu 180 ekleyecem diye okuyunca böyle cevap verdim sonra ok yaydan çıkmış oldu :) daha sonra verdiğim linkte Tarih işlemleri ile ilgili link paylaşmıştım umarım arakadaşın işine yaramıştır. bu arada Uses a System.DateUtils koyulması gerekmekte
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
ercanskose
Üye
Mesajlar: 62
Kayıt: 18 Eyl 2011 02:31

Re: Tarihe ay ekleme

Mesaj gönderen ercanskose »

xxxjedixxx yazdı:Aşağıdaki fonksiyonu dener misin?

Kod: Tümünü seç

function IncMonthX(pTarih: TDate; pAy: Byte): TDate;
var Yil, Ay, Gun: Word;
begin
  Result := pTarih; 
  if pAy = 0 then Exit;
  DecodeDate(pTarih, Yil, Ay, Gun);
  IncAMonth(Yil, Ay, Gun, pAy);
  Result := EncodeDate(Yil, Ay, Gun);
end;

teşekkürler arkadaşım fonksiyon iş gördü. 6 ay ekliyor. Cevap veren tüm arkadaşlara da teşekkür ederim.
Cevapla