Ir al contenido


Foto

Crear un calendario (forma rapida y sucia)


  • Por favor identifícate para responder
3 respuestas en este tema

#1 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 22 enero 2013 - 04:41

Pues eso, necesitaba un calendario en excel y esta es la forma que se me ocurrió:


delphi
  1. program Calendario;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   Windows, SysUtils, Classes, DateUtils;
  7.  
  8. procedure EscribirMes(Mes: Integer);
  9. var
  10.   i,j: Integer;
  11.   Fecha: TDateTime;
  12. begin
  13.   Case Mes of
  14.     1: Writeln(';;;Enero;');
  15.     2: Writeln(';;;Febrero;');
  16.     3: Writeln(';;;Marzo;');
  17.     4: Writeln(';;;Abril;');
  18.     5: Writeln(';;;Mayo;');
  19.     6: Writeln(';;;Junio;');
  20.     7: Writeln(';;;Julio;');
  21.     8: Writeln(';;;Agosto;');
  22.     9: Writeln(';;;Septiembre;');
  23.     10: Writeln(';;;Octubre;');
  24.     11: Writeln(';;;Noviembre;');
  25.     12: Writeln(';;;Diciembre;');
  26.   end;
  27.   Writeln('Lunes;Martes;Miercoles;Jueves;Viernes;Sabado;Domingo');
  28.   Fecha:= EncodeDate(2013,Mes,1);
  29.   while DayOfTheWeek(Fecha) <> 1 do
  30.   begin
  31.     Fecha:= Fecha - 1;
  32.   end;
  33.   for i:= 1 to 8 do
  34.   begin
  35.     for j:= 1 to 7 do
  36.     begin
  37.       if MonthOf(Fecha) = Mes then
  38.         Write(DayOf(Fecha));
  39.       Write(';');
  40.       Fecha:= Fecha + 1;
  41.     end;
  42.     Writeln;
  43.   end;
  44. end;
  45.  
  46. var
  47.   i: Integer;
  48. begin
  49.   for i:= 1 to 12 do
  50.   begin
  51.     EscribirMes(i);
  52.   end; 
  53. end.



Una vez compilado hacer algo como esto:


delphi
  1. Calendario.exe > Calendario.csv



Y ya tenemos un calendario  :D (aunque el código es MUY mejorable)

  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 enero 2013 - 07:16

Muy Bueno, gracias maestro.  (y)
  • 0

#3 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 22 enero 2013 - 07:59

Una mejora muy sencilla y que te evita tener que recompilar cada año el programa es pasarle por parámetro el año del que quieres crear el calendario ;-)
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 22 enero 2013 - 08:22

Interesante  (y)

Esto me hizo acordar de un almanaque de oficina que tenía mi padre. Tenía un sistema de "cilindro" por dentro de modo que para ir al siguiente mes sólo debía deslizar el "calendario" hacia la izquierda y listo. Ahora se mostraba el mes siguiente, y así hasta el infinito. Y yo me dije ba... no puede ser cierto, ¿y para años bisiestos anda? Y si... sorprendentemente también contemplaba esto, tenía otro "cilindro" que permitía correr los años y se ajustaba en el mes de Febrero. ¡Tenía unas ganas de abrirlo para ver como era su diseño por dentro!
No estoy con demasiadas ganas de hacer los cálculos pero cada x años se repiten los calendarios. ¿Era cada 11? Yo soy capaz de desempolvar un almanaque viejo con tal de no comprar uno nuevo.  :D

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.