Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-03 Por tôpico Rogério

Fiz Assim, utilizando  a Ve_Feriado() enviada anteriormente.
Funciona, mas está demorando um pouco ! (Bom já é uma solução)
Ela vai somando 1 enquanto não é Finais de Semana e Feriados
Alguém tem alguma dica para melhorar isto...?

Vejam:
Function ACHA_DATA_DU( dDatini: TDateTime ; du : Integer) : TDateTime;
var
i: Integer;
dDatvenc:TDateTime;
Year, Month, DayIni, DayFin, DofWe : Word;
nDiaCorr, nSinal, nFimSem, wFer : Real;
begin
   wFer := 0;
   dDatvenc := dDatini;

   for i := 1 to du do
   Begin
  ddatvenc := (ddatvenc+1);
  //* Verifica se é feriado **
  While Ve_Feriado(dDatVenc) Do
  While EhFeriado(dDatVenc) Do
  Begin
 ddatvenc := (ddatvenc+1);
  End;
  //* Verifica se é dia da semana (segunda a sexta) *
  Dofwe := DayOfWeek(dDatvenc);
  if Dofwe = 07 then// Sábado
 dDatvenc := dDatvenc+2
  else
  if Dofwe = 01 then// Domingo
 dDatvenc := dDatvenc+1;
  //Quando forem feriados consecutivos (Ex: Carnaval)
  While Ve_Feriado(dDatVenc) Do
  begin
 dDatvenc := (dDatvenc+1);
  end;
   End;
   Result := dDatVenc;
end;

Abraços


- Original Message - 
From: Rogério [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, December 02, 2004 5:43 PM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Este método, não dará o resultado esperado, pois o resultado
 de MinhaDataInicial+30 são dias corridos e não dias úteis.
 Acho que não entendeste...
 Preciso, somar somente Dias Úteis à uma Data e achar que dia cairá:

 Ex: Hoje: 02/12/2004 + 30 = 13/01/2005

 Tb. acho que não é feriado, nunca tive muita certeza.
 O que sei é que para os Bancos/Financeiras/Etc... não é um dia útil.
 Acho que estou chegando a solução de todo o problema.
 Vou testar, se der certo, aviso.
 [ ]'s

 - Original Message - 
 From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Thursday, December 02, 2004 3:19 PM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS


 
  Rogerio,
 
  1) Quanto a 2a feira de Carnaval - No que me consta não é feriado e sim
  ponto facultativo (pelo menos é o que sei, caso esteja errado,
 desculpe-me).
  Caso seja realmente feriado, basta vc alterar a função e incluir.
 
  2) Chame a função assim:
 
  MinhaDataInicial = StrToDate('01/10/2004');
  MinhaNovaData:=MinhaDataInicial+QtdDiasUteis(MinhaDataInicial,
  MinhaDataInicial+30);
 
  Não testei, mas acredito que seja isto o que vc esta querendo
 
  [ ]´s
  Moacir
 
   - Original Message - 
  From: Rogério [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Thursday, December 02, 2004 11:50 AM
  Subject: Re: [delphi-br] Re: DIAS ÚTEIS
 
 
  
   Td. Bem mas...
   O que estamos comentando é :
  
   :- dada uma Data e, um Número de Dias Úteis, achar a Data Final.
  
   Novamente:
   Acha_a_Data_Dia_Util('01/10/2004',30)
   Que Retornará: 17/11/2004
  
   Outro detalhe, acho que tem alguns feriados (dias não úteis) que não
 estão
   sendo considerados.
   Ex.:
   - Segunda Feira de Carnaval
  
   Valeu.
   [ ]'s
  
 
 
 
 
  -- 
  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
 
 
 
 
 
 
 
 



 -- 
  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











-- 
 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-03 Por tôpico Rogério

voltei para olhar esta dia abaixo e
Pelo que pude notar, a dateutil.pas é da RxLib ???
Estou Certo ???
Se for, infelismente não poderei utilizar esta funcionalidade.

- Original Message - 
From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, December 01, 2004 11:59 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Rogerio/Moita,

 Exato, a função retorna TRUE se for um feriado.

 Uso esta outra  funçao que deve dar um bom empurrão no que vc´s querem
 fazer.

 {Colocar dateutil no USES }

 Function QtdDiasUteis(nMes : Integer=0; nAno: Integer=0): Integer;
 Function BoM(dData : TDateTime):TDateTime;
 begin
   Result := dData - ExtractDay(dData) + 1;
 end;
 Function EoM(dData : TDateTime):TDateTime;
 begin
   Result := BoM(IncMonth(dData,1))-1;
 end;
 var
   DataIni,
   DataFim : TDateTime;
 Begin
   Result:=0;
   Try

DataIni:=StrToDateFmt('dd/mm/','01/'+StrZero(nMes,2)+'/'+StrZero(nAno,4)
);
   except
  Exit;
   end;
   DataFim:=Eom(DataIni);
   While DataIni=DataFim do
   Begin
 If (DayOfWeek(DataIni) in [2,3,4,5,6]) and
(Not Ve_Feriado(DataIni)) then
Inc(Result);
 DataIni:=DataIni+1;
   End;
 End;


 [ ]´s
 Moacir


 - Original Message - 
 From: Rogério [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, December 01, 2004 11:32 AM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS


 
  Acho que estamos quase chegando lá...
  Só falta eu conseguir agora, fazer a função:
 
  Acha_a_Data_Dia_Util('01/10/2004',30)
  Que Retornará: 17/11/2004
 
  Se alguém conseguir tb...
  [ ]'s
 
  - Original Message - 
  From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, December 01, 2004 10:50 AM
  Subject: Re: [delphi-br] Re: DIAS ÚTEIS
 
 
 
  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 (nMes1) or (nMes12) 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

Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-02 Por tôpico Prisma Sistemas - Moacir

Rogerio,

Faça uma mudança simples, veja como:

Function QtdDiasUteis(dDataIni: tDateTime; dDataFim: tDateTime): Integer;
Begin
  Result:=0;
 While dDataIni=dDataFim do
  Begin
 If (DayOfWeek(dDataIni) in [2,3,4,5,6]) and
(Not Ve_Feriado(dDataIni)) then
Inc(Result);
 dDataIni:=dDataIni+1;
  End;
End;

[ ]´s
Moacir



-- 
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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-02 Por tôpico Rogério

Td. Bem mas...
O que estamos comentando é :

:- dada uma Data e, um Número de Dias Úteis, achar a Data Final.

Novamente:
Acha_a_Data_Dia_Util('01/10/2004',30)
Que Retornará: 17/11/2004

Outro detalhe, acho que tem alguns feriados (dias não úteis) que não estão
sendo considerados.
Ex.:
- Segunda Feira de Carnaval

Valeu.
[ ]'s

- Original Message - 
From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, December 02, 2004 7:08 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Rogerio,

 Faça uma mudança simples, veja como:

 Function QtdDiasUteis(dDataIni: tDateTime; dDataFim: tDateTime): Integer;
 Begin
   Result:=0;
  While dDataIni=dDataFim do
   Begin
  If (DayOfWeek(dDataIni) in [2,3,4,5,6]) and
 (Not Ve_Feriado(dDataIni)) then
 Inc(Result);
  dDataIni:=dDataIni+1;
   End;
 End;

 [ ]´s
 Moacir



 -- 
 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











-- 
 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-02 Por tôpico Rogério

26/05 Agora, também é um feriado Bancário...
(Pelo menos aqui em São Paulo não sei se é nacional)
não me lembro ao certo, ref. ao quê...

- Original Message - 
From: Rogério [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, December 02, 2004 11:50 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Td. Bem mas...
 O que estamos comentando é :

 :- dada uma Data e, um Número de Dias Úteis, achar a Data Final.

 Novamente:
 Acha_a_Data_Dia_Util('01/10/2004',30)
 Que Retornará: 17/11/2004

 Outro detalhe, acho que tem alguns feriados (dias não úteis) que não estão
 sendo considerados.
 Ex.:
 - Segunda Feira de Carnaval

 Valeu.
 [ ]'s

 - Original Message - 
 From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Thursday, December 02, 2004 7:08 AM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS


 
  Rogerio,
 
  Faça uma mudança simples, veja como:
 
  Function QtdDiasUteis(dDataIni: tDateTime; dDataFim: tDateTime):
Integer;
  Begin
Result:=0;
   While dDataIni=dDataFim do
Begin
   If (DayOfWeek(dDataIni) in [2,3,4,5,6]) and
  (Not Ve_Feriado(dDataIni)) then
  Inc(Result);
   dDataIni:=dDataIni+1;
End;
  End;
 
  [ ]´s
  Moacir
 
 
 
  -- 
  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
 
 
 
 
 
 
 
 



 -- 
  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











-- 
 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-02 Por tôpico Prisma Sistemas - Moacir

Rogerio,

1) Quanto a 2a feira de Carnaval - No que me consta não é feriado e sim 
ponto facultativo (pelo menos é o que sei, caso esteja errado, desculpe-me). 
Caso seja realmente feriado, basta vc alterar a função e incluir.

2) Chame a função assim:

MinhaDataInicial = StrToDate('01/10/2004');
MinhaNovaData:=MinhaDataInicial+QtdDiasUteis(MinhaDataInicial, 
MinhaDataInicial+30);

Não testei, mas acredito que seja isto o que vc esta querendo

[ ]´s
Moacir

 - Original Message - 
From: Rogério [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, December 02, 2004 11:50 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Td. Bem mas...
 O que estamos comentando é :

 :- dada uma Data e, um Número de Dias Úteis, achar a Data Final.

 Novamente:
 Acha_a_Data_Dia_Util('01/10/2004',30)
 Que Retornará: 17/11/2004

 Outro detalhe, acho que tem alguns feriados (dias não úteis) que não estão
 sendo considerados.
 Ex.:
 - Segunda Feira de Carnaval

 Valeu.
 [ ]'s





-- 
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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-02 Por tôpico Rogério

Este método, não dará o resultado esperado, pois o resultado
de MinhaDataInicial+30 são dias corridos e não dias úteis.
Acho que não entendeste...
Preciso, somar somente Dias Úteis à uma Data e achar que dia cairá:

Ex: Hoje: 02/12/2004 + 30 = 13/01/2005

Tb. acho que não é feriado, nunca tive muita certeza.
O que sei é que para os Bancos/Financeiras/Etc... não é um dia útil.
Acho que estou chegando a solução de todo o problema.
Vou testar, se der certo, aviso.
[ ]'s

- Original Message - 
From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Thursday, December 02, 2004 3:19 PM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Rogerio,

 1) Quanto a 2a feira de Carnaval - No que me consta não é feriado e sim
 ponto facultativo (pelo menos é o que sei, caso esteja errado,
desculpe-me).
 Caso seja realmente feriado, basta vc alterar a função e incluir.

 2) Chame a função assim:

 MinhaDataInicial = StrToDate('01/10/2004');
 MinhaNovaData:=MinhaDataInicial+QtdDiasUteis(MinhaDataInicial,
 MinhaDataInicial+30);

 Não testei, mas acredito que seja isto o que vc esta querendo

 [ ]´s
 Moacir

  - Original Message - 
 From: Rogério [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Thursday, December 02, 2004 11:50 AM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS


 
  Td. Bem mas...
  O que estamos comentando é :
 
  :- dada uma Data e, um Número de Dias Úteis, achar a Data Final.
 
  Novamente:
  Acha_a_Data_Dia_Util('01/10/2004',30)
  Que Retornará: 17/11/2004
 
  Outro detalhe, acho que tem alguns feriados (dias não úteis) que não
estão
  sendo considerados.
  Ex.:
  - Segunda Feira de Carnaval
 
  Valeu.
  [ ]'s
 




 -- 
 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











-- 
 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico Rogério

Estou muito preocupado tb. com a performance da função...
Já imaginou...
1.000.000 de registros fazendo uma conta para chegar no resultado da data
???
[ ]'s

- 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










-- 
 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico Prisma Sistemas - Moacir

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 (nMes1) or (nMes12) 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

 





Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico MOITA

Moacir,

Pelo que entendi, esta funcao retorna True se a data especificada for um 
feriado ? Seria isso mesmo ?
  - Original Message - 
  From: Prisma Sistemas - Moacir 
  To: [EMAIL PROTECTED] 
  Sent: Wednesday, December 01, 2004 9:50 AM
  Subject: Re: [delphi-br] Re: DIAS ÚTEIS


  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 (nMes1) or (nMes12) 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]



Yahoo! Grupos, um serviço oferecido por: 
 
São Paulo Rio de Janeiro Curitiba Porto Alegre Belo 
Horizonte Brasília  
 
   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



-- 
 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

 





RES: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico jrjuniore

Eu criei esta rotina para mim, vê se vira para vc tb.

function DiaUtil(pData : String) : Boolean;
var
  dtCheck : TDate;
  Feriados: String;
  Dia,Mes,Ano : Word;
  DiaMes  : String;
begin
  Result := False;
  //Para alimentar a String com outros feriados, usar formato DD/MM,
seguindo o padrão abaixo:
  Feriados := '01/01 23/02 24/02 09/04 21/04 01/05 10/06 09/07 07/09 12/10
02/11 15/11 25/12';

  dtCheck := StrToDate(pData);
  Result := (dayofweek(dtCheck) in [2..6]);

  DecodeDate(dtCheck,Ano,Mes,Dia);
  DiaMes := FormatFloat('00',Dia) + '/' + FormatFloat('00',Mes);

  if Result then
Result := Pos(DiaMes,Feriados)  1;
end; 


Júnior Coelho.
Desenvolvimento de Sistemas
* (11) 3266 - 1286
* (11) 7175 - 1885
* [EMAIL PROTECTED]

-Mensagem original-
De: Rogério [mailto:[EMAIL PROTECTED] 
Enviada em: quarta-feira, 1 de dezembro de 2004 11:28
Para: [EMAIL PROTECTED]
Assunto: Re: [delphi-br] Re: DIAS ÚTEIS


Já testei, é isto mesmo...
só tem um problema...
Segunda Feira de carnaval, não acusa como sendo um feriado (Feriado
Bancário) !
Na redoma, este dia não é um dia útil. (Acho que existem outros feriados que
esta função não considera... vou checar.) Mas ja é uma boa opção para não se
utilizar uma tabela com os feriados, ácho que só precisa de uns ajustes.
[]'s

- Original Message -
From: MOITA [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, December 01, 2004 12:20 PM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



Moacir,

Pelo que entendi, esta funcao retorna True se a data especificada for um
feriado ? Seria isso mesmo ?
  - Original Message - 
  From: Prisma Sistemas - Moacir
  To: [EMAIL PROTECTED]
  Sent: Wednesday, December 01, 2004 9:50 AM
  Subject: Re: [delphi-br] Re: DIAS ÚTEIS


  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 (nMes1) or (nMes12) 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

Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico Prisma Sistemas - Moacir

Rogerio/Moita,

Exato, a função retorna TRUE se for um feriado.

Uso esta outra  funçao que deve dar um bom empurrão no que vc´s querem 
fazer.

{Colocar dateutil no USES }

Function QtdDiasUteis(nMes : Integer=0; nAno: Integer=0): Integer;
Function BoM(dData : TDateTime):TDateTime;
begin
  Result := dData - ExtractDay(dData) + 1;
end;
Function EoM(dData : TDateTime):TDateTime;
begin
  Result := BoM(IncMonth(dData,1))-1;
end;
var
  DataIni,
  DataFim : TDateTime;
Begin
  Result:=0;
  Try
 
DataIni:=StrToDateFmt('dd/mm/','01/'+StrZero(nMes,2)+'/'+StrZero(nAno,4));
  except
 Exit;
  end;
  DataFim:=Eom(DataIni);
  While DataIni=DataFim do
  Begin
If (DayOfWeek(DataIni) in [2,3,4,5,6]) and
   (Not Ve_Feriado(DataIni)) then
   Inc(Result);
DataIni:=DataIni+1;
  End;
End;


[ ]´s
Moacir


- Original Message - 
From: Rogério [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, December 01, 2004 11:32 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Acho que estamos quase chegando lá...
 Só falta eu conseguir agora, fazer a função:

 Acha_a_Data_Dia_Util('01/10/2004',30)
 Que Retornará: 17/11/2004

 Se alguém conseguir tb...
 [ ]'s

 - Original Message - 
 From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, December 01, 2004 10:50 AM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 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 (nMes1) or (nMes12) 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











 -- 
  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

Re: [delphi-br] Re: DIAS ÚTEIS

2004-12-01 Por tôpico Rogério

Caraca...
Não entendí muito bem mas...
Acho que se eu utilizar esta... vai complicar...
Por exemplo:
Se cair no meio do mês... vou ter calcular quantos dias úteis à tirar,
para chegar no resultado !
[]'s

- Original Message - 
From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, December 01, 2004 11:59 AM
Subject: Re: [delphi-br] Re: DIAS ÚTEIS



 Rogerio/Moita,

 Exato, a função retorna TRUE se for um feriado.

 Uso esta outra  funçao que deve dar um bom empurrão no que vc´s querem
 fazer.

 {Colocar dateutil no USES }

 Function QtdDiasUteis(nMes : Integer=0; nAno: Integer=0): Integer;
 Function BoM(dData : TDateTime):TDateTime;
 begin
   Result := dData - ExtractDay(dData) + 1;
 end;
 Function EoM(dData : TDateTime):TDateTime;
 begin
   Result := BoM(IncMonth(dData,1))-1;
 end;
 var
   DataIni,
   DataFim : TDateTime;
 Begin
   Result:=0;
   Try

DataIni:=StrToDateFmt('dd/mm/','01/'+StrZero(nMes,2)+'/'+StrZero(nAno,4)
);
   except
  Exit;
   end;
   DataFim:=Eom(DataIni);
   While DataIni=DataFim do
   Begin
 If (DayOfWeek(DataIni) in [2,3,4,5,6]) and
(Not Ve_Feriado(DataIni)) then
Inc(Result);
 DataIni:=DataIni+1;
   End;
 End;


 [ ]´s
 Moacir


 - Original Message - 
 From: Rogério [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, December 01, 2004 11:32 AM
 Subject: Re: [delphi-br] Re: DIAS ÚTEIS


 
  Acho que estamos quase chegando lá...
  Só falta eu conseguir agora, fazer a função:
 
  Acha_a_Data_Dia_Util('01/10/2004',30)
  Que Retornará: 17/11/2004
 
  Se alguém conseguir tb...
  [ ]'s
 
  - Original Message - 
  From: Prisma Sistemas - Moacir [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, December 01, 2004 10:50 AM
  Subject: Re: [delphi-br] Re: DIAS ÚTEIS
 
 
 
  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 (nMes1) or (nMes12) 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