Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2010
alejozd alejozd is offline
Miembro
 
Registrado: jul 2010
Posts: 16
Poder: 0
alejozd Va por buen camino
Sumar Dias a un fecha en Delphi 5

Hola, quiero sumarle a una fecha una cantidad de dias, en delphi 5, no esta la DateUtils asi que no se puede con IncDay.
Creo que es por el lado de Decodedate y Encodedate, si alguien tiene un ejemplo de como se ahce le agradeceria, la cantidad de dias a sumar la tengo en una variable, puede ser string o integer, pero lo que quiero es que sume pero valide que si pasa del mes le sume otro al mes, la verdad lo logre hacer pero cuando sumo mas dias del mes me sale Invalid Argument to date encode. el codigo lo tengo asi:

procedure TFrmFacturaVenta.cxDBLPlazoPropertiesChange(Sender: TObject);
var
str,CodPl:String; //codpl para ubicar el plazo
Ano,Mes,Dia:Word;
fecfac,fecfacr:TDate;
begin
CodPl:=cxDBLPlazo.DataBinding.DataSource.DataSet.fieldbyname('FVCODPLAZO').AsString;
str:='SELECT PL.plcantidad FROM tblplazo PL WHERE PL.plid ='+ codpl;
DmGlobal.IBQy1.Close;
DmGlobal.IBQy1.SQL.Text:=str;
DmGlobal.IBQy1.Open;
str:= DmGlobal.IBQy1.Fields[0].AsString; //Aqui asigno la cantidad de dias de plazo
fecfac:=cxDateFechaFactura.Date;
DecodeDate(fecfac,Ano,Mes,Dia); //decodifica la fecha
Dia:=Dia + StrToInt(str); //le suma la cantidad de dias a la variable dia
fecfacr:=EncodeDate(Ano,Mes,Dia); //recodifica la fecha
cxDateFechaVence.date:=fecfacr; //la asigna al control dateedit
end;

De antemano muchas gracias si conocen otra manera de hacerlo.
Responder Con Cita
  #2  
Antiguo 07-08-2010
alejozd alejozd is offline
Miembro
 
Registrado: jul 2010
Posts: 16
Poder: 0
alejozd Va por buen camino
perdon por poner depronto preguntas tan tontas, pero de verdad no sabia como, leyendo y leyendo me encontre con la solucion y es asi:

cxDateFechaVence.date := cxDateFechaFactura.date + StrToInt(str);

Donde StrToInt(str) es la cantidad de dias a sumar sino que lo convierto en un integer para que lo deje sumar.

tal ves esto le sirva a otra persona que como yo hasta ahora se este iniciando en Delphi.
Responder Con Cita
  #3  
Antiguo 07-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
en delphi 5 no se llama DateUtils, se llama DateUtil.

Saludos.
__________________

Responder Con Cita
  #4  
Antiguo 12-11-2010
albertpaul68 albertpaul68 is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 2
Poder: 0
albertpaul68 Va por buen camino
Handling Dates and Time in Delphi

Gracias!

Como siempre, los lectores deben hacer lo que hizo Micheus e inmediatamente se refieren a la documentación de Delphi. Incluso si, como él, ya sabe bastante sobre el manejo de fechas en Delphi. Hay un montón de cosas útiles allí.

Además, la unidad (s) que usted necesita para poner en su cláusula uses variar entre las versiones de Delphi. La unidad DateUtils se introdujo en Delphi 6. FPC utiliza DateUtils también. Para Delphi 5 y anteriores de todas las cosas es la fecha en la unidad del sistema.


Por cierto, Micheus, gracias por esa función ingenioso! Que el error de punto flotante no es culpa de Delphi, aunque ... que es un problema común a todos los equipos digitales. La forma en que se maneja es brillante e instructivo!


Por último, me gustaría añadir algunas reflexiones a la hora de leer la información de la fecha de una cadena. Si sabe que su entrada se llevará una de las varias formas distintas, puede utilizar pruebas .. salvo bloques hasta que llegue una fecha correcta. Por ejemplo:

function read_date_format_1( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007-12-31'
end;

function read_date_format_2( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007 12 31'
end;

function read_date_format_3( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '31/12/2007'
end;

function read_date( users_input: string ): tDateTime;
begin
try
result := read_date_format_1( users_input )
except on EConvertError do
try
result := read_date_format_2( users_input )
except on EConvertError do
result := read_date_format_3( users_input )
end
end
end;

Este código es para la claridad y la ilustración. (Hay maneras mucho mejores de escribirlo.)

Por cierto, Micheus, gracias por recibir mi nombre.
Responder Con Cita
  #5  
Antiguo 22-12-2010
albertpaul68 albertpaul68 is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 2
Poder: 0
albertpaul68 Va por buen camino
good job

good attempt
Cita:
Empezado por albertpaul68 Ver Mensaje
Gracias!

Como siempre, los lectores deben hacer lo que hizo Micheus e inmediatamente se refieren a la documentación de Delphi. Incluso si, como él, ya sabe bastante sobre el manejo de fechas en Delphi. Hay un montón de cosas útiles allí.

Además, la unidad (s) que usted necesita para poner en su cláusula uses variar entre las versiones de Delphi. La unidad DateUtils se introdujo en Delphi 6. FPC utiliza DateUtils también. Para Delphi 5 y anteriores de todas las cosas es la fecha en la unidad del sistema.


Por cierto, Micheus, gracias por esa función ingenioso! Que el error de punto flotante no es culpa de Delphi, aunque ... que es un problema común a todos los equipos digitales. La forma en que se maneja es brillante e instructivo!


Por último, me gustaría añadir algunas reflexiones a la hora de leer la información de la fecha de una cadena. Si sabe que su entrada se llevará una de las varias formas distintas, puede utilizar pruebas .. salvo bloques hasta que llegue una fecha correcta. Por ejemplo:

function read_date_format_1( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007-12-31'
end;

function read_date_format_2( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '2007 12 31'
end;

function read_date_format_3( s: string ): tDateTime;
begin
// this function tries to read dates formatted as '31/12/2007'
end;

function read_date( users_input: string ): tDateTime;
begin
try
result := read_date_format_1( users_input )
except on EConvertError do
try
result := read_date_format_2( users_input )
except on EConvertError do
result := read_date_format_3( users_input )
end
end
end;

Este código es para la claridad y la ilustración. (Hay maneras mucho mejores de escribirlo.)

Por cierto, Micheus, gracias por recibir mi nombre.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como sumar Dias a una fecha esimon OOP 18 05-08-2008 16:50:50
sumar dias una fecha dada Goyo Varios 3 25-05-2007 02:23:39
Sumar dias a una fecha inicial en delphi bellota Varios 4 06-06-2006 16:42:40
SUmar dias a una fecha raffagia Varios 1 04-10-2004 18:28:13
Sumar Dias a una fecha? danytorres SQL 1 16-01-2004 05:04:15


La franja horaria es GMT +2. Ahora son las 06:01:05.


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