Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Asignar el valor de DayOfTheWeek a una variable (https://www.clubdelphi.com/foros/showthread.php?t=17834)

gluglu 23-01-2005 13:48:51

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.

marcoszorrilla 23-01-2005 14:05:12

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.

gluglu 23-01-2005 15:52:26

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

marcoszorrilla 23-01-2005 16:16:41

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.

marcoszorrilla 23-01-2005 16:29:37

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.

gluglu 23-01-2005 17:32:51

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.

marcoszorrilla 23-01-2005 19:44:15

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.

roman 23-01-2005 19:47:47

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


La franja horaria es GMT +2. Ahora son las 13:01:08.

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