Paulo,

Tenho usado esta funçăo a um bom tempo com resultados satisfatórios:

Function Ve_Feriado(dData : TDateTime=0) : Boolean;
var
  nMes : Integer;
  y,m,d:Word;
  G,I,J,C,H,L: Integer;
  E:TDateTime;
  dSexta : TDateTime;
  dCarnaval : TDateTime;
  ano : integer;
const
   FERIADOSFIXOS  : Array [1..12] of String =('01~',       // Jan
                                              '',          // Fev
                                              '',          // Mar
                                              '21~',       // Abr
                                              '01~',       // Mai
                                              '',          // Jun
                                              '',          // Jul
                                              '',          // Ago
                                              '07~',       // Set
                                              '12~',       // Out
                                              '02~15~',    // Nov
                                              '25~');      // Dez

Begin
  If dData=0 then
     Result:=False
  else
  Begin
     Try
       nMes  :=StrToInt(FormatDateTime('mm',dData));
     except
       nMes  :=0;
     end;
     If (nMes<1) or (nMes>12) then
        Result:=False
     else
        Result:=Pos(FormatDateTime('dd',dData),FERIADOSFIXOS[nMes] )<>0;
  end;
//---- Calcula o Feriado de Carnaval e Sexta-Feira Santa
  DecodeDate(dData, Y, M, D);
  ano := y;
  G := ano mod 19;
  C := ano div 100;
  H := (C-C div 4-(8*C+13) div 25 + 19*G+15)mod 30;
  I := H-(H div 28)*(1-(H div 28)*(29 div(H+1))*((21-G)div 11));
  J := (ano + ano div 4 +I+2-C+C div 4) mod 7;
  L := I-J;
  m := 3+(L+40) div 44;
  d := L+28-31*(m div 4);
  //y := ano;
  E := EncodeDate(y,m,d);
  While DayOfWeek(E)>1 do
    E := E+1;
  //--- Sexta-feira Santa
  dSexta := E - 2;
  //--- Carnaval
  dCarnaval := E - 47;
  If (dData = dSexta) Or (dData = dCarnaval) then
     Result := True;
End;


[ ]´s
Moacir


----- Original Message ----- 
From: "drummondfilho" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, December 01, 2004 8:59 AM
Subject: [delphi-br] Re: DIAS ÚTEIS




Gostaria de ajudar a montar o algoritmo se vocę puder me passar a
tabela de feriados ficaria muito feliz em poder ajudar.

[]'s
Paulo Drummond Filho
[EMAIL PROTECTED]





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]

Links do Yahoo! Grupos











-- 
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.4 - Release Date: 30/11/2004




-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.4 - Release Date: 30/11/2004



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que vocę faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a