Ver Mensaje Individual
  #5  
Antiguo 25-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Reputación: 27
delphi.com.ar Va por buen camino
Bueno, me han herido la moral , y por eso hice esta comprobación:
Código:
function DelphiComAr(AFechaNacimiento: TDateTime) : Integer;
begin
  Result := Trunc((Date - AFechaNacimiento) / 365.25);
end;

function JachGuate(FechaNacimiento : TDateTime) : Integer;
var
  an, mn, dn : Word;
  ahoy, mhoy, dhoy : Word;
begin
  DecodeDate(FechaNacimiento, an, mn, dn);
  DecodeDate(Now, ahoy, mhoy, dhoy);
  if (mhoy * 100 + dhoy) > (mn * 100 + dn) Then
     Result := an - dn
  else
     Result := an - dn + 1;
end;

function MarcosZorrilla(FechaNacimiento : TDate) : Integer;
Var
  an, mn, dn : Word;
  ahoy, mhoy, dhoy : Word;
Begin
  DecodeDate(FechaNacimiento, an, mn, dn);
  DecodeDate(Now, ahoy, mhoy, dhoy);

  If  (mn > mhoy) or((mn = mhoy) and (dn > dhoy)) then
   Result:=ahoy - an - 1
  else
   Result:=ahoy - an;
End;


procedure TForm1.Button1Click(Sender: TObject);
var
  ADate : TDateTime;
  i,
  ADelphi,
  AJach,
  AMarcos: Integer;
begin
  ADate := StrToDate('01/01/1900');
  repeat
    ADelphi := DelphiComAr(ADate);
    AJach   := JachGuate(ADate);
    AMarcos := MarcosZorrilla(ADate);
    {He comentado la comprobación de la funcion JachGuate}
    if {(ADelphi <> AJach) or} (ADelphi <> AMarcos) {or (AJach <> AMarcos) }Then
       Memo1.Lines.Add(Format('%s - Delphi.com.ar: %4d   JachGuate: %4d   MarcosZorrilla: %4d', [DateToStr(ADate), ADelphi, AJach, AMarcos]));
    ADate := ADate + 1;
  until ADate > Date;
end;
Conclusión: La función de JachGuate evidentemente esta mal, o yo tengo 1996 años , y la de Marcos difiere de la mía en un pequeño detalle, en mi función que es mucho mas sencilla, el día del cumpleaños aún no a sumado un año, en la de marcos el día del cumpleaños ya se ha sumado un año, bueno eso queda a elección del programador.
Si la comprobación se extiende a fechas muy antiguas, falla constantemente, ninguna de las funciones tiene en cuenta el desfasaje del calendario.

Saludos
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 25-07-2003 a las 15:57:36.
Responder Con Cita