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 23-01-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Asignar el valor de DayOfTheWeek a una variable

Como puedo asignar el valor que me dá la función DayOfTheWeek a una variable para después trabajar con él.
Código Delphi [-]
var
  Month,Year,Day : Word;
  Fecha : TDateTime;
  K : Word;
begin
  DecodeDate(Now,Year,Month,Day);
  Fecha := EncodeDate(Year,Month,1);
  K     := DayOfTheWeek(Fecha);
end;
Resulta que K siempre acaba teniendo el valor 0 !! Necesito el valor en K porque después tengo que hacer otras operaciones con ese valor.

Gracias y saludos.
Responder Con Cita
  #2  
Antiguo 23-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
MiDia:Integer;
begin
MiDia:=DayOfWeek(Date);
ShowMessage(IntToStr(MiDia));
end;

En tu ejemplo no le asignas ningún valor a la variable por eso te da 0.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 23-01-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias Marcos por tu respuesta, pero sigo sin comprenderlo.

En mi código
Código Delphi [-]
K := DayOfTheWeek(Fecha);
se le asigna un valor a K !!
Si miro con el Debug, K siempre es 0. Ahora bien, acabo de comprobar que si a continuación de esta sentencia pongo la que tú me has indicado
Código Delphi [-]
ShowMessage(IntToStr(K));
entonces resulta que mirando con el Debug, K tiene el valor correspondiente.

Me gustaría que me explicaras el porqué de esto.

Gracias
Responder Con Cita
  #4  
Antiguo 23-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Month,Year,Day : Word;
  Fecha : TDateTime;
  K : Word;
begin
  DecodeDate(Now,Year,Month,Day);
  Fecha := EncodeDate(Year,Month,3);
  K     := DayOfWeek(Fecha);
  ShowMessage(IntToStr(k));
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 23-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Bueno pues resulta que si funciona correctamente, pero como no dijiste la versión de Delphi que utilizabas.

En D5 no exite DayOfTheWeek sino DayOfWeek, ahora lo he probado con D7 y funciona sin ningún problema.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Month,Year,Day : Word;
  Fecha : TDateTime;
  K : Word;
begin
  DecodeDate(Now,Year,Month,Day);
  Fecha := EncodeDate(Year,Month,2);
  K     := DayOfTheWeek(Fecha);
  ShowMessage(IntToStr(k));
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 23-01-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Utilizo Delphi 2005.

Lo que no hemos aclarado es porqué si miras con el Debug el valor de K, es siempre 0 si no añades ShowMessage. En cambio si el programa está con la instrucción ShowMessage entonces K toma el valor correcto.

Por lo menos eso pasa en D2005 y D8.
Responder Con Cita
  #7  
Antiguo 23-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues no voy a poder aclarártelo ya que no tengo la versión 2.005, supongo que o no están bien configuradas las opciones de depuración, o aunque me parecería mas raro un fallo del depurador.

Lo cierto es que K, contiene el valor pue sino no se visualizaría con ShowMessage.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 23-01-2005
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
Específicamente en Delphi 8 o 2005 no sé, pero es muy posible que el compilador esté omitiendo la llamada a DayOfWeek. Verás, el compilador (o el linker) de Delphi es bastante eficiente. Al ver una llamada a función que no se usa (el valor de K no lo usas posteriormente), el linker sabe que no hay necesidad de agregarla al ejecutable. Cuando Marcos pone el ShowMessage, entonces al linker no le queda más remedio que incluir la llamada a la función ya que sí tiene un uso posterior.

// Saludos
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 21:53:41.


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