delphi4arab منتديات دلفي للعرب
كيفية حساب العمر عن طريق ادخال السنة فقط - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيفية حساب العمر عن طريق ادخال السنة فقط (/showthread.php?tid=6617)



كيفية حساب العمر عن طريق ادخال السنة فقط - Anter2010 - 06-12-2014

السلام عليكم ورحمة الله وبركاته

واجهتني هذه النقطة في عملية تحويل العمر عن طريق ادخال سنة الميلاد في edit فقط فتعطيني العمر

في edit2

PHP كود :
function Years(PastDate,CurrentDate:TDate):integer;
var
  
PastMonth,PastDay,PastYear,CurrentYear,CurrentMonth,CurrentDay:word;
begin
  DecodeDate
(PastDate,PastYear,PastMonth,PastDay);
  
DecodeDate(CurrentDate,CurrentYear,CurrentMonth,CurrentDay);
  if (
PastYear=CurrentYear) and (PastMonth=CurrentMonth) and (PastDay=CurrentDay) then
    Result
:=0
  
else
  
begin
    Result
:=CurrentYear-PastYear;
    if (
PastMonth>CurrentMonth) then
      Dec
(Result)
    else
    
begin
      
if PastMonth=CurrentMonth then
        
if (PastDay>CurrentDay) then
          Dec
(Result);
    
end;
  
end;
end;

procedure TForm1.dtp1Change(Sender: TObject);
begin
 Edt3
.Text := IntToStr(YearsBetween(dtp1.Date,now));
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
 Edt2
.Text:=Format(' %d ', [Years(StrToDate('03/06/1978'),Date)]);
 
end;

end. 
محاولة تغير التاريخ كمل ب EDIT1.TEXT


كيفية حساب العمر عن طريق ادخال السنة فقط - Anter2010 - 06-12-2014

PHP كود :
procedure TForm1.edt1Change(Sender: TObject);
var
   
date1, date2: TDate;
begin
  date1 
:= StrTofloat(Edt1.Text);
  
date2 := Now;
  
Edt2.Text:=  FloatToStr(YearsBetween(date2, date1));
end;

end. 

ولاهذا عمل


كيفية حساب العمر عن طريق ادخال السنة فقط - bassem_43 - 06-12-2014

الخطا بسيط يا اخي اسم الدالة هو Years وليس YearsBetween غير الكود ليصبح
PHP كود :
function Years(PastDate,CurrentDate:TDate):integer;
var
  
PastMonth,PastDay,PastYear,CurrentYear,CurrentMonth,CurrentDay:word;
begin
  DecodeDate
(PastDate,PastYear,PastMonth,PastDay);
  
DecodeDate(CurrentDate,CurrentYear,CurrentMonth,CurrentDay);
  if (
PastYear=CurrentYear) and (PastMonth=CurrentMonth) and (PastDay=CurrentDay) then
    Result
:=0
  
else
  
begin
    Result
:=CurrentYear-PastYear;
    if (
PastMonth>CurrentMonth) then
      Dec
(Result)
    else
    
begin
      
if PastMonth=CurrentMonth then
        
if (PastDay>CurrentDay) then
          Dec
(Result);
    
end;
  
end;

end;
procedure TForm1.edt1Change(Sender: TObject);
var
   
date1, date2: TDate;
begin
  date1 
:= StrTofloat(Edt1.Text);
  
date2 := Now;
  
Edt2.Text:=  FloatToStr(Years(date2, date1));
end;

end. 



كيفية حساب العمر عن طريق ادخال السنة فقط - Anter2010 - 07-12-2014

السلام عليكم شكرا اخي لكن المشكل ليس بالدالة yearsbetween

و الدالة years
PHP كود :
procedure TForm1.edt1Change(Sender: TObject); 
var 
   
date1, date2: TDate; 
begin 
  date1 
:= StrTofloat(Edt1.Text); 
  
date2 := Now; 
  
Edt2.Text:=  FloatToStr(YearsBetween(date2, date1)); 
end; 

end. 

في هذه الدالة عند ادخال السنة فقط يعطيني عمر غير صحيح اظن المشكلة في تحويل الادخال في edit1


كيفية حساب العمر عن طريق ادخال السنة فقط - bassem_43 - 07-12-2014

اهلا اخي عنتر
بما ان الدالة YearsBetween تحسب الفارق بين تاريخين فسيكون date1 يحتوي على تاريخ وليس رقم كما فعلت انت ادن :
date1 := StrToDate(Edt1.Text); ليكون الكود كما يلي :
PHP كود :
procedure TForm1.edt1Change(Sender: TObject); 
var 
   
date1, date2: TDate; 
begin 
  date1 
:= StrToDate(Edt1.Text); 
  
date2 := Now; 
  
Edt2.Text:=  FloatToStr(YearsBetween(date2, date1)); 
end; 

end. 
والله اعلم


كيفية حساب العمر عن طريق ادخال السنة فقط - FaLcon_DZ - 07-12-2014

اخي انا لدي خلل في برنامجي الصغير حاولت حل المشكلة ولم استطع وبالتالي ان يستنتج البرنامج التسنة من الجهاز وليس من خلال المتغير الذي اعطيته له انا مضبوط .شاهد الكود كيف اقوم بتغيير مكان 2014 بدالة تستنتج السنة من النظام ليعمل في كل زمان .
وما هي الكائنات التي اضيفها للبرنامج مثل date او غيرها .. وشكرا .

PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls, ComCtrls;

type
  TForm1 
= class(TForm)
    
lbl1: TLabel;
    
lbl2: TLabel;
    
edt1: TEdit;
    
edt2: TEdit;
    
btn1: TButton;
    
btn2: TButton;
    
lblAnswer: TLabel;
    
procedure btn1Click(Sender: TObject);
    
procedure btn2Click(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin

lblAnswer
.Caption:= 'Hello Mr.'+edt1.Text +',Your were born in '+edt2.Text+',your Age is :'+ IntToStr(2014 - StrToInt(edt2.Text));
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
edt1
.Text:='';
edt2.Text:='';
lblAnswer.Caption:=''
end;

end. 



كيفية حساب العمر عن طريق ادخال السنة فقط - محمد عبد العزيز - 08-12-2014


السلام عليكم
المشكلة في ادخال المعلومات فانت لاتتحقق من المدخل
اما تستخدم حدث أخر غير OnChange او تتحقق من البيانات المدخة تاريخ Valid Date



كيفية حساب العمر عن طريق ادخال السنة فقط - bassem_43 - 08-12-2014

FaLcon_DZ كتب :اخي انا لدي خلل في برنامجي الصغير حاولت حل المشكلة ولم استطع وبالتالي ان يستنتج البرنامج التسنة من الجهاز وليس من خلال المتغير الذي اعطيته له انا مضبوط .شاهد الكود كيف اقوم بتغيير مكان 2014 بدالة تستنتج السنة من النظام ليعمل في كل زمان .
وما هي الكائنات التي اضيفها للبرنامج مثل date او غيرها .. وشكرا .

PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls, ComCtrls;

type
  TForm1 
= class(TForm)
    
lbl1: TLabel;
    
lbl2: TLabel;
    
edt1: TEdit;
    
edt2: TEdit;
    
btn1: TButton;
    
btn2: TButton;
    
lblAnswer: TLabel;
    
procedure btn1Click(Sender: TObject);
    
procedure btn2Click(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin

lblAnswer
.Caption:= 'Hello Mr.'+edt1.Text +',Your were born in '+edt2.Text+',your Age is :'+ IntToStr(2014 - StrToInt(edt2.Text));
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
edt1
.Text:='';
edt2.Text:='';
lblAnswer.Caption:=''
end;

end. 
السلام عليكم
اولا ان اردت مسح ما بوجد في edit.text يمكنك ايضا استعمال :
PHP كود :
edit1.clear; 
للحصول على تاريخ اليوم يوجد دالة now) dateToStr) واستعمالها يكون هكدا :
PHP كود :
edit1.text:=DateToStr(now); 
التاريح ياخد من الجهاز لدى تاكد من صحته اولا .
للاستزادة ابحث في المنتدى بوجد العديد من المواضيح حول دلك
http://delphi4arab.net/forum/showthread.php?tid=11037&highlight=%C7%E1%CA%C7%D1%ED%CE
او
http://delphi4arab.net/forum/search.php?searchid=753889


كيفية حساب العمر عن طريق ادخال السنة فقط - Anter2010 - 10-12-2014

السلام عليكم ورحمة الله وبركاته

ان شاء الله قد توصلت الى الحل

PHP كود :
procedure TForm1.edt1Change(Sender: TObject);
var
year,month,day:word;
begin
  
if edt1.Text <> '' then
  begin
 DecodeDate
(date, Year, Month, Day);
  
Edt2.Text:=   IntToStr((year) - StrToInt(edt1.Text))
  
end
else
    
edt2.Clear;
  
end;

end.