Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Saber si un año es bisiesto (https://www.clubdelphi.com/foros/showthread.php?t=41585)

Bicho 20-03-2007 19:18:49

Cita:

Empezado por cmpimentel
hola....

escribeme a mi correo es mas practico y pueda ayudarte en lo que necesites [email protected]

¿Y nosotros no estamos ayudando? :confused:
¿No es práctica esta discusión? :confused:

Saludos

egostar 20-03-2007 19:54:07

Cita:

Empezado por roman
¡Pues a eso me refiero! Los métodos que describen, requieren, de una u otra forma, saber si el año es o no bisiesto. Por ello, lo más práctico es, o usar IsLeapYear que usa la fórmula que comenta basti.

// Saludos

Y si a mi me gusta complicarme la vida y no quiero usar esa función de IsLeapYear.......

Bueno, aqui les dejo un pequeño código que iba a poner en el hilo de código sin utilidad.:D

Código Delphi [-]
function TForm1.EsBisiesto(year:integer):bool;
begin
  result := false;
  If ( (year mod 100)= 0) or
     ( (year mod 400)= 0) or
     ( (year mod 4)= 0) then
     result := true;
end;

//Con el método DecodeDate se obtiene el año y es pasado a la función
  DecodeDate(Now,Anio,Mes,Dia);
  If EsBisiesto(Anio) then
     ShowMessage('Es Bisiesto')
  else ShowMessage('NO es Bisiesto');

Saludos.

egostar 20-03-2007 19:56:19

[quote=cmpimentel]
Cita:

Empezado por cmpimentel
hola....


escribeme a mi correo es mas practico y pueda ayudarte en lo que necesites [email protected] soy informatico sivernetico y vivo en ciudad de la habana, cuba

Ya veo, seguro es más práctico.:rolleyes:

DarKraZY 20-03-2007 20:00:55

Cita:

Empezado por egostar
Y si a mi me gusta complicarme la vida y no quiero usar esa función de IsLeapYear.......

¿Por qué no copiamos toda la VCL y la metemos en el form principal? :P

egostar 20-03-2007 20:04:30

Cita:

Empezado por DarKraZY
¿Por qué no copiamos toda la VCL y la metemos en el form principal? :P

:D:D:D, Hombre, que el comentario no es tan literal, no es que YO me quiera complicar la vida, pero me parecio atinado colocarla aqui ya que como lo señalé en su oportunidad, estaba destinado al hilo de código sin utilidad.

Saludos.

roman 20-03-2007 20:04:36

Cita:

Empezado por egostar
Bueno, aqui les dejo un pequeño código que iba a poner en el hilo de código sin utilidad

No te ofendas, pero este código sí que sería inútil pues marca 1900 como bisiesto, siendo que no lo fue. :p

Yo supongo que te refieres al código que puso basti anteriormente:

Código Delphi [-]
function bisiesto(year : word): boolean;
begin
  Result := (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0));
end;

// Saludos

egostar 20-03-2007 20:08:50

Cita:

Empezado por roman
No te ofendas, pero este código sí que sería inútil pues marca 1900 como bisiesto, siendo que no lo fue. :p

Yo supongo que te refieres al código que puso basti anteriormente:

Código Delphi [-]function bisiesto(year : word): boolean; begin Result := (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0)); end;


// Saludos

Y porque iba a ofenderme, si ya sabia que era inutil de procedencia.:D:D:D

Saludos.

basti 20-03-2007 22:43:20

Acabo de ver la implementación de IsLeapYear, y es idéntica a lo que puse antes. Voy a decirle a los de Borland que no me copien más código, jeje

JM75 21-03-2007 10:48:06

Perdonad que no haya contestado antes. Y retomando el tema de este hilo, me acaban de decir que existe la función DaysInMonth que devuelve los días del mes de la fecha que se indique. Si ponemos febrero en la fecha, nos dirá si ese año en febrero hay 28 o 29 días.


DaysInMonth(StrToDate('19/02/2007')); -> Devuelve 28


Por cierto, en mi opinión, los foros permiten que varias personas puedan aportar sus ideas y discutir sobre ellas con lo que el resultado es más de lo que espera uno.

Gracias a todos.

[quote=cmpimentel]
Cita:

Empezado por cmpimentel
hola....


escribeme a mi correo es mas practico y pueda ayudarte en lo que necesites [email protected] soy informatico sivernetico y vivo en ciudad de la habana, cuba


Neftali [Germán.Estévez] 21-03-2007 17:25:28

Cita:

Empezado por cmpimentel
...escribeme a mi correo es mas practico y pueda ayudarte en lo que necesites

Pues no, no es más práctico.
La gracia de los foros es que aquí todos podemos preguntar y responder y las respuestas pueden servir después a otras personas que tienen la misma duda.

Neftali [Germán.Estévez] 21-03-2007 17:33:04

Cita:

Empezado por egostar
Y si a mi me gusta complicarme la vida y no quiero usar esa función de IsLeapYear...

Otra opción es una array con todos los años bisiestos. Para saber si es o no, basta con hacer un recorrido secuencial. La mejor optimización sería utilizar listas ordenadas o una HashList.
El único inconveniente es que tendrás que recompilar cada 4 años, pero ¡¡quien no recompila cada 3 o 4 años!!! :D:D:D

Héctor Randolph 21-03-2007 18:27:03

Cita:

Empezado por JM75
me acaban de decir que existe la función DaysInMonth que devuelve los días del mes de la fecha que se indique. Si ponemos febrero en la fecha, nos dirá si ese año en febrero hay 28 o 29 días.

Según recuerdo esa función también hace uso de IsLeapYear, lo dicho, entramos en un círculo vicioso :D:D:D

Saludos


La franja horaria es GMT +2. Ahora son las 20:18:09.

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