Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con función para detectar días. (https://www.clubdelphi.com/foros/showthread.php?t=84536)

pabloe9k 31-10-2013 17:50:45

Ayuda con función para detectar días.
 
Hola a todos.
Necesito de su ayuda, gente.
Tendría que hacer una función que me devuelva la cantidad de días martes que tiene el mes en curso.
Por las dudas, aclaro que son muy básicos mis conocimientos de Delphi, con lo cual la respuesta con la que me ayuden tendría que tener el código de la función completo.
Si pueden darme una mano, será realmente una ayuda!!
Muchas gracias.
Saludos.

ecfisa 31-10-2013 19:26:45

Hola pabloe9k, bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Código Delphi [-]
uses DateUtils;

function CountSameDay(const aYear, aMonth, aDay: Word): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 1 to DaysInAMonth(aYear, aMonth) do
    if DayOfTheWeek(EncodeDate(aYear, aMonth, i)) = aDay then
      Inc(Result);
end;

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  mes, anio : Word;
begin
  mes  := 10;
  anio := 2013;
  ShowMessage(Format('El mes %d de %d tiene %d días martes',
    [mes,anio,CountSameDay(anio ,mes, DayTuesday)]));
end;
La función te sirve para cualquier día, lo envio como argumento (aDay), usando las constantes simbólicas declaradas en la unidad DateUtils:
Código Delphi [-]
const
  DayMonday = 1;
  DayTuesday = 2;
  DayWednesday = 3;
  DayThursday = 4;
  DayFriday = 5;
  DaySaturday = 6;
  DaySunday = 7;

Saludos :)

nlsgarcia 31-10-2013 20:04:49

pabloe9k,

Cita:

Empezado por pabloe9k
...una función que me devuelva la cantidad de días martes que tiene el mes en curso...

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DateUtils, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MonthCalendar1: TMonthCalendar;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Calcula la cantidad de días Martes de un Mes y Año específico
procedure TForm1.Button1Click(Sender: TObject);
const
   NameMonth : Array[1..12] of String = ('Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic');

var
   i : Integer;
   DateSearch : TDate;
   Year, Month, Days, DaysMonth : Word;

begin

   DateSearch := MonthCalendar1.Date;
   Year := StrToInt(FormatDateTime('y',DateSearch));
   Month := StrToInt(FormatDateTime('m',DateSearch));
   DaysMonth := DaysInAMonth(Year,Month);

   for i := 1 to DaysMonth do
      if FormatDateTime('ddd', EncodeDate(Year,Month,i)) = 'Tue' then
         inc(Days);

   MessageDlg(Format('El Mes de %s tiene %d días Martes',[NameMonth[Month],Days]),mtInformation,[mbOK],0);

end;

end.
El código anterior calcula la cantidad de días Martes de un Mes y Año específico como se puede apreciar en la siguiente imagen:



Espero sea útil :)

Nelson.

pabloe9k 01-11-2013 16:23:25

Muchas, muchas gracias a ambos!
Ya me pongo a probarlo.

Saludos!


La franja horaria es GMT +2. Ahora son las 12:19:12.

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