Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 24
Bicho Va por buen camino
Hola,

Cita:
Empezado por richi
Otra posible manera de hace lo seria poner el primer dia de la fecha del siguiente mes y restandole 1 nos daria los dias.


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  fechaUsar : TDate;
  ano, mes, dia : word;
  anoComprobar : string;
begin
  anoComprobar:= '2007';
  fechaUsar:= strtodate('01/03/' +  anoComprobar) - 1;
  DecodeDate(fechaUsar,ano,mes,dia);

  if dia = 29 then
    ShowMessage('Bisiesto')
  else
    ShowMessage('No es bisiesto');
end;
Hombre para eso creo más cómodo lo que he puesto en la primera respuesta. No es muy elegante el forzar el error pero tremendamente efectivo y rápido, sin andarse con rodeos.

Saludos

Última edición por Bicho fecha: 20-03-2007 a las 18:50:34.
Responder Con Cita
  #2  
Antiguo 20-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Oye Bicho, ¿cómo crees que hace StrToDate para generar el error en caso de que le pases un año que no es bisiesto?

// Saludos
Responder Con Cita
  #3  
Antiguo 20-03-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 24
Bicho Va por buen camino
Esto es lo que hay, que yo tambien se mirarlo, eh?
Código Delphi [-]
function StrToDate(const S: string): TDateTime;
begin
  if not TryStrToDate(S, Result) then
    ConvertErrorFmt(@SInvalidDate, [S]);
end;

//Y

function TryStrToDate(const S: string; out Value: TDateTime): Boolean;
var
  Pos: Integer;
begin
  Pos := 1;
  Result := ScanDate(S, Pos, Value) and (Pos > Length(S));
end;

Saludos
Responder Con Cita
  #4  
Antiguo 20-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ajá, y ScanDate utiliza TryEncodeDate:

Código Delphi [-]
function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean;
var
  I: Integer;
  DayTable: PDayTable;
begin
  Result := False;
  DayTable := @MonthDays[IsLeapYear(Year)];
  if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
    (Day >= 1) and (Day <= DayTable^[Month]) then
  begin
    for I := 1 to Month - 1 do Inc(Day, DayTable^[i]);
    I := Year - 1;
    Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta;
    Result := True;
  end;
end;



// Saludos
Responder Con Cita
  #5  
Antiguo 20-03-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 25
poliburro Va por buen camino
Creo que se están corriendo en círculos, solo es necesario utilizar IsLeapYear.

Para que codificar algo que ya está hecho,
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #6  
Antiguo 20-03-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por poliburro
Creo que se están corriendo en círculos, solo es necesario utilizar IsLeapYear.
¡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
Responder Con Cita
  #7  
Antiguo 20-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
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.

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.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
Saber si es (x86) ó (x64) acertij022 Varios 2 20-02-2007 20:29:53
Saber si es un entero chipsoni Varios 4 06-02-2007 16:52:48
Saber Ip de una PC??? JELIRM API de Windows 4 02-07-2006 22:28:38
Saber la ip del servidor? crievep Conexión con bases de datos 1 05-04-2006 21:22:56
Saber si hay conexion JCR Internet 0 26-04-2004 21:07:06


La franja horaria es GMT +2. Ahora son las 07:05:40.


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
Copyright 1996-2007 Club Delphi