Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2005
torete_86 torete_86 is offline
Miembro
 
Registrado: dic 2005
Posts: 12
Poder: 0
torete_86 Va por buen camino
Ayuda Con fechas

Buenas.

Tengo un problema y esque no se usar mucho el decode

Lo que tengo que hacer es lo siguiente:

Tengo un combobox en el que tienen que aparecer los dias del mes actual.
Ex: Si estamos en diciembre 31 Items, si estamos en Febrero 28

La cuestion es que no se como hacer para que segun el mes en el que se encuentre el sistema en el combobox aparezcan tantos items como dias tiene el mes.

Si alguien me puede ayudar se lo agradeceria mucho.

Muchas gracias de antemano.

Saludos

P.D. me descuidaba, uso D6
Responder Con Cita
  #2  
Antiguo 02-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Prueba con la función DaysInAMonth() que viene en la unidad DateUtils.

Te sirve para conocer cuántos días tiene un mes determinado.

Después sólo es cuestión se colocarlos en el ComboBox.

Un saludo
Responder Con Cita
  #3  
Antiguo 02-12-2005
torete_86 torete_86 is offline
Miembro
 
Registrado: dic 2005
Posts: 12
Poder: 0
torete_86 Va por buen camino
Buenas,

Muchas gracias por responder tan rapido.

Pero no se como usar bien esa funcion. Me dice que no esta declarada (no la tengo declarada como function pq no se de donde sacarla )

Si me pudieras echar una mano, o si crees que hay otra manera de hacerlo.

Saludos
Responder Con Cita
  #4  
Antiguo 02-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Olvidé que la unidad DateUtils apareció después de la versión Delphi 7.

Revisa en este tema tú mismo puedes implementar la función.

Saludos.

Última edición por Héctor Randolph fecha: 02-12-2005 a las 10:47:47. Razón: errata
Responder Con Cita
  #5  
Antiguo 02-12-2005
torete_86 torete_86 is offline
Miembro
 
Registrado: dic 2005
Posts: 12
Poder: 0
torete_86 Va por buen camino
puffff no he sido capaz tio

algun otro metodo? xD
Responder Con Cita
  #6  
Antiguo 02-12-2005
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Te explico un poco lo del tema con modificaciones...

const
MonthDays: array [1..12] of byte =(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function DaysInAMonth(const AYear, AMonth: Word): Word;
begin
// Miramos si es febrero y año bisiesto, para ello usamos la función
// del tema que te comento héctor isLeapYear
if (AMonth = 2) and (isLeapYear(AYear)) then
Result := MonthDays[AMonth] + 1 // De ser así se pone 29 días a feb.
else
Result := MonthDays[AMonth]; // En otro caso los días salen de la tabla.
end;

function IsLeapYear(Year: Word): Boolean;
begin
Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
Responder Con Cita
  #7  
Antiguo 02-12-2005
torete_86 torete_86 is offline
Miembro
 
Registrado: dic 2005
Posts: 12
Poder: 0
torete_86 Va por buen camino
ahora por ejemplo en el oncreate tengo ke tener una variable que sea fecha no?

y a esta fecha pasarle la sysdate.

luego hacer un decode de la fecha y pasarle el mes a esa funcion no?

jueeeee (no se puede ser novato pq andas mas pez xDDDD jajaja)

muchas gracias
Responder Con Cita
  #8  
Antiguo 02-12-2005
piccolo2101 piccolo2101 is offline
Miembro
 
Registrado: oct 2005
Posts: 63
Poder: 19
piccolo2101 Va por buen camino
Exacto. otra opcion es separa febrero de los demas de la siguiente forma:
Código Delphi [-]
var
   auxMes : Word;
 
// Si es febrero
if Mes = 2 then
begin
   result := 28;      // En principio tiene 28 dias
   if AñoBisiesto(Año) then  // Salvo que sea bisiesto que le sumamos 1
      result := Result + 1;   
end
// Si es otro mes
else
begin
   // Con esto conseguimos hacer que a partir del mes 8 auxMes vuelva a ser
   //1,2,3 para el 8,9,10 respetivamente.
   auxMes := (Mes mod 8) + (Mes div 8);
   // Una vez hecho esto, si te fijas, los impares tendrán 31 días y los pares 
   // 30
   if (auxMes mod 2) = 0 then   // Si es par 
      Result := 30
   else
      Result := 31;
end;

Este podría ser otro procedimiento válido para calcular los días. La ventaja del anterior con respecto a este es la disposición precalculada de los valores de los días pero como los ordenadores trabajan muy rápido con este tipo de operaciones no tiene importancia. Por otro lado, la ventaja de este es que evitamos tener espacio en memoria ocupada por la constante aunque tampoco es que sea drástico.

Última edición por vtdeleon fecha: 02-12-2005 a las 16:15:41. Razón: Encierra los codigo en Etiquetas[Delphi][/delphi]
Responder Con Cita
  #9  
Antiguo 04-12-2005
torete_86 torete_86 is offline
Miembro
 
Registrado: dic 2005
Posts: 12
Poder: 0
torete_86 Va por buen camino
Buenas!!

muchisimas gracias por ayudarme

al final e conseguido solucionar el problema.

saludos
Responder Con Cita
  #10  
Antiguo 04-12-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Cita:
Empezado por torete_86
al final e conseguido solucionar el problema.
Hola, me da gusto que hayas resuelto tu duda.

Con el fin de ayudar a otras personas que se encuentren con la misma situación, sería bueno que nos digas, cómo lo solucionaste finalmente.

Un saludo.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 22:57:09.


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