Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2017
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 274
Poder: 17
webmasterplc Va por buen camino
Calcular edad del niño en variables separadas

Buenas estoy tratando de calcular la edad de una persona y tengo esta función que publico Mamu
Código Delphi [-]
function CalculaEdadCompleta(Fecha:TDateTime):String;
var A, AA, M, MM, D, DD: Word;
  Anio, Mes, Dia: double;
begin
  DecodeDate(Fecha, A, M, D);
  DecodeDate(Date, AA, MM, DD);
  Anio := Int(AA - A);
  if( M <= MM ) then
     Mes := MM - M
  else
  begin
    Mes := MM+12-M;
    Anio := Anio -1;
  end;
  if( D <= DD ) then
    Dia := DD - D
  else
  begin
    Dia:=DD+MonthDays[IsLeapYear(AA),MM]-D;
    Mes := Mes -1;
  end;
if Mes < 0 then
  begin
    Anio := Anio - 1;
    Mes := 12 + Mes;
  end;
  Result := Format('Años: %.0f, Meses: %.0f, Dias: %.0f', [Anio, Mes, Dia]);

el llamado
Código Delphi [-]
etedad.Caption :=CalculaEdadCompleta(fnacimiento);

pero me coloca la edad con días meses y me gustaría en el caption capturarlo cada dato en una variable

Código Delphi [-]
etanios.caption:=CalculaEdadCompleta(fnacimiento)
etmeses.caption:=CalculaEdadCompleta(fnacimiento)
etdias.caption:=CalculaEdadCompleta(fnacimiento)
Responder Con Cita
  #2  
Antiguo 08-11-2017
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Buenas.

Ahora trate de cambiar la definición de la función, por algo como
Código Delphi [-]
procedure CalculaEdadCompleta(Fecha: TDateTime;var Anio,Mes,Dia: Double);
var A, AA, M, MM, D, DD: Word;
begin
Y el llamado, por algo como:
Código Delphi [-]
CalculaEdadCompleta(fnacimiento,fanio,fmes,fdia);

etanios.caption:=FloatToStr(fanio);
etmeses.caption:=FloatToStr(fmes);
etdias.caption:=FloatToStr(fdia);
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 08-11-2017
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Ah, y puede poner en comentario la siguiente línea
Código Delphi [-]
//Result := Format('Años: %.0f, Meses: %.0f, Dias: %.0f', [Anio, Mes, Dia]);
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 08-11-2017
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 274
Poder: 17
webmasterplc Va por buen camino
Excelente Agradecido
Responder Con Cita
  #5  
Antiguo 09-11-2017
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 10
wilcg Va por buen camino
Hola webmasterplc, prueba con esta función.

Código Delphi [-]
function ObAAMMDD( tFInicio : TDate; tFFin : TDate ) : string;
var
  anos, meses, dias, m : Integer;
begin
  anos := YearOf (tFFin) - YearOf (tFInicio);
  if MonthOf (tFInicio) > MonthOf (tFFin) then
    anos := anos - 1;
  if MonthOf (tFFin) < MonthOf (tFInicio) then
    meses := 12 - MonthOf (tFInicio) + MonthOf (tFFin)
  else
    meses := MonthOf (tFFin) - MonthOf (tFInicio);
  if DayOf (tFFin) < DayOf (tFInicio) then
  begin
    meses := meses - 1;
    if MonthOf (tFFin) = MonthOf (tFInicio) then
    begin
      anos := anos - 1;
      meses := 11;
    end;
  end;
  dias := DayOf (tFFin) - DayOf (tFInicio);
  if dias < 0 then
  begin
    m := MonthOf (tFFin) - 1;
    if m = 0 then
      m := 12;
    case m of
      1, 3, 5, 7, 8, 10, 12 : dias := 31 + dias;
      4, 6, 9, 11 : dias := 30 + dias;
      2 :
      begin
        if ((YearOf(tFFin) mod 4 = 0) and
            (YearOf(tFFin) mod 100 <> 0))
            or (YearOf(tFFin) mod 400 = 0) then
          dias := 29 + dias
        else
          dias := 28 + dias;
      end;
    end;
  end;
  result := IntToStr (anos) + ' años, ' +
      IntToStr (meses) + ' meses, ' +
      IntToStr (dias) + ' días';

  {
     ObAAMMDD( tFInicio, tFFin );
  }
end;

Código Delphi [-]
ObAAMMDD( FechaInicio, FechaFin );
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calcular EDAD completa MaMu Varios 3 29-03-2011 22:29:53
Calcular Edad Ivan A. Garcia Conexión con bases de datos 3 14-08-2008 01:36:29
calcular la edad.... Goyo OOP 16 04-07-2007 23:36:53
calcular edad emiliu Varios 3 28-11-2005 10:58:52
Calcular edad picapiedra Varios 4 21-12-2004 00:27:29


La franja horaria es GMT +2. Ahora son las 02:43:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi