Kod: Tümünü seç
tarih1------31.10.2004
tarih2------10.11.2002
sonuc G/A/Y/21.11.0001
GÜN/AY/YIL olarak nasıl alabilirim.
Teşekkürler.
Kod: Tümünü seç
tarih1------31.10.2004
tarih2------10.11.2002
sonuc G/A/Y/21.11.0001
Kod: Tümünü seç
var
frm_TarhHesp: Tfrm_TarhHesp;
I:Integer;
Goster:Boolean;
implementation
uses TrhHsp;
{$R *.DFM}
procedure Tfrm_TarhHesp.btn_TarihHesapClick(Sender: TObject);
var
TARIH,BUGUN,SONUC:TDateTime;
GUN1,AY1,YIL1,GUN2,AY2,YIL2:word;
GUN,AY,YIL:integer;
begin
BUGUN:=StrToDate(mskEdit_BaslaTarih.Text);
TARIH:=StrToDate(mskEdit_BitisTarih.Text);
DecodeDate(BUGUN, YIL1, AY1, GUN1);
DecodeDate(TARIH, YIL2, AY2, GUN2);
{showmessage(inttostr(YIL1)+'-'+inttostr(YIL2)+'-'+inttostr(AY1)+'-'+inttostr(AY2)+'-'+inttostr(GUN1)+'-'+inttostr(GUN2)+'-');}
YIL:=YIL1 - YIL2;
AY:=AY1 - AY2;
if AY<0 then
begin
AY:=AY+12;
YIL:=YIL-1;
end;
GUN:=GUN1 - GUN2;
if GUN<0 then
begin
GUN:=GUN+30;
AY:=AY-1;
end;
if AY<0 then
begin
AY:=AY+12;
YIL:=YIL-1;
end;
Memo1.Text:=IntToStr(YIL);
Memo2.Text:=IntToStr(AY);
Memo3.Text:=IntToStr(GUN);
btn_TarihHesap.Enabled:=False;
end;
procedure Tfrm_TarhHesp.FormShow(Sender: TObject);
begin
for I := 0 to ComponentCount -1 do
begin
if (Components[I] is TMaskEdit) then TMaskEdit(Components[I]).Text:='';
if (Components[I] is TMemo) then TMemo(Components[I]).Text:='';
if (Components[I] is TEdit) then TEdit(Components[I]).Text:='';
end;
btn_TarihHesap.Enabled:=False;
end;
procedure Tfrm_TarhHesp.mskEdit_BaslaTarihChange(Sender: TObject);
begin
if (Screen.ActiveForm.ActiveControl is TMaskEdit) then
if (Screen.ActiveForm.ActiveControl as TMaskEdit).EditText='' then
(Screen.ActiveForm.ActiveControl as TMaskEdit).EditText:=' / / ';
end;
procedure Tfrm_TarhHesp.mskEdit_BitisTarihExit(Sender: TObject);
begin
btn_TarihHesap.Enabled:=True;
btn_TarihHesap.SetFocus;
end;
procedure Tfrm_TarhHesp.btn_CikisClick(Sender: TObject);
begin
close;
end;
procedure Tfrm_TarhHesp.mskEdit_BaslaTarihKeyPress(Sender: TObject;
var Key: Char);
begin
if Key=#13 then mskEdit_BaslaTarihExit(mskEdit_BaslaTarih);
end;
procedure Tfrm_TarhHesp.mskEdit_BaslaTarihExit(Sender: TObject);
begin
mskEdit_BitisTarih.SetFocus;
end;
procedure Tfrm_TarhHesp.mskEdit_BitisTarihKeyPress(Sender: TObject;
var Key: Char);
begin
if Key=chr(VK_RETURN) then
perform(WM_NEXTDLGCTL,0,0)
end;
- Bu iki başlığın beraber değerlendirilmesi adına bu notu düştüm...@mrmcop yazdı:- Hepimiz biliyoruz ki bir yıl içerisinde, ay'daki gün sayısı 4 farklı sayıdır. 28, 29, 30, 31... Bu durumun önemi, 30.01.2004 ile 02.02.2004 gibi ardışık aylarda ön plana gelir...
- Temrin : Kendiniz deneyin isterseniz... aşağıdaki işlemleri kağıt üzerinde nasıl yapardınız ?
- Yani
30.03.2004 -> 01.04.2004 arasında 2 gün'e karşılık 1 sonucu,
28.02.2004 -> 01.03.2004 arasında 2 gün'e karşılık 3 sonucu,
28.02.2005 -> 01.03.2005 arasında 1 gün'e karşılık 3 sonucu
vermesiyle hatalı işlem gerçekleştirmektedir...
- Tasarlayacağınız fonksiyonda bunlara dikkat ediniz... Vakit bulduğumda size kendi fonksiyonumu sunarım...