Calcular la edad de un usuario

Quisiera saber como calcular la edad de un usuario, he leído algunas respuestas y puedo ver que se resta el año actual con al año del nacimiento del usuario y así tengo la edad, mi problema es que no se con que función tomar el año actual y como tomar el año de nacimiento del usuario ya que en el campo de mi BD esta con el siguiente formato 18/05/1977.
Después de esto necesito es guardarlo en una variable, para así mostrarlo con un Showmessage.
Bueno.

1 respuesta

Respuesta
1
A ver si te sirve esto:
function Edad(FechaNacimiento: TDateTime): Smallint;
var
AnyoNac, MesNac, DiaNac: Word;
AnyoHoy, MesHoy, DiaHoy: Word;
begin
DecodeDate(FechaNacimiento, AnyoNac, MesNac, DiaNac);
DecodeDate(Date, AnyoHoy, MesHoy, DiaHoy);
Result := AnyoHoy - AnyoNac;
if MesHoy < MesNac then
Result := Result - 1
else
if MesHoy = MesNac then
if DiaHoy < DiaNac then
Result := Result - 1;
end;
Te retorna un integer. Sólo tienes que hacer un IntToStr si lo metes en el showmessage y ya está.
Ej. De llamada:
Showmessage(IntToStr(Edad(query1.Fieldbyname('FechaNacimiento').AsDateTime)));
He probado el código en una aplicación vacía y va ok. Creo que es problema tuyo. Fíjate en la linea que te marca y la anterior. Te paso lo que he probado yo:
unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Table1: TTable;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function Edad(FechaNacimiento: TDateTime): Smallint;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(IntToStr(Edad(table1.Fieldbyname('HireDate').AsDateTime)));
end;
function Edad(FechaNacimiento: TDateTime): Smallint;
var
AnyoNac, MesNac, DiaNac: Word;
AnyoHoy, MesHoy, DiaHoy: Word;
begin
DecodeDate(FechaNacimiento, AnyoNac, MesNac, DiaNac);
DecodeDate(Date, AnyoHoy, MesHoy, DiaHoy);
Result := AnyoHoy - AnyoNac;
if MesHoy < MesNac then
Result := Result - 1
else
if MesHoy = MesNac then
if DiaHoy < DiaNac then
Result := Result - 1;
end;
end.
Tengo, un problemita el cual puede que sea muy novatongo, pero me tiene atascado.
Al utilizar tu código tal como esta me sale este error.
BEGIN expected but END found
Pense que se solucionaria agregandole o quitandole un end; pero no es asi.
No se que podría ser este error,
Saludos.
Hola, muchísimas gracias.
Mi error estaba en la linea:
function Edad(FechaNacimiento: TDateTime): Smallint;
La cual se declaraba en dos partes,
Lo ejecute y me funciono correctamente.
Saludos,
Ajum

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas