Function que retorna mês(em Extenso) informando um número

03/05/2005

0

Dae Galera mais uma vez peço a ajuda de vocês tenho o seguine problema:

Gostaria de Fazer uma Função que Retorne o Mês(em Extenso) informando apenas o número do mês entre 1 à 12. Algo como:

function FrmPrincipal.ExtensoMes(n: Integer): String;
begin
 Case n Of
    01 : n:= ´Janeiro´;
    02 : n:= ´Fevereiro´;
    03 : n:= ´Março´;
    04 : n:= ´Abril´;
    05 : n:= ´Maio´;
    06 : n:= ´Junho´;
    07 : n:= ´Julho´;
    08 : n:= ´Agosto´;
    09 : n:= ´Setembro´;
    10 : n:= ´Outubro´;
    11 : n:= ´Novembro´;
    12 : n:= ´Dezembro´;
  end;


Tipo tenho um campo Data e uma variável mes onde a var mes vai receber um Copy extraindo apenas o número do Mês aplicando a um campo calculado.

Ex: SQLNotaMes.Value:= ExtensoMes(5); //onde SQLNota é um SimpleDataSet e Mes é um Campo Calculado.


Crashovewrite

Crashovewrite

Responder

Post mais votado

03/05/2005

Olá
Se vc tiver usando isso pra formatar data, vc pode usar a função FormatDateTime passando a seguinte string de formato:
´dd "de" mmmm "de" yyyy´

Por exemplo, formatando a data 01/01/2005, ele retorna 01 de janeiro de 2005.
Abraços


Tnaires

Tnaires
Responder

Mais Posts

03/05/2005

Crashovewrite

Dae Galera Descobri oque estava fazendo de errado

function FrmPrincipal.ExtensoMes(n: Integer): String; 
begin 
 Case n Of 
    01 : n:= ´Janeiro´; 
    02 : n:= ´Fevereiro´; 
    03 : n:= ´Março´; 
    04 : n:= ´Abril´; 
    05 : n:= ´Maio´; 
    06 : n:= ´Junho´; 
    07 : n:= ´Julho´; 
    08 : n:= ´Agosto´; 
    09 : n:= ´Setembro´; 
    10 : n:= ´Outubro´; 
    11 : n:= ´Novembro´; 
    12 : n:= ´Dezembro´; 
  end;
end;


o n dos números de 01 à 12 troquei por result... ficando assim

function TQRNota.ExtensoMes(n: Integer): String;
begin
Case n Of
    01 : result:= ´Janeiro´;
    02 : result:= ´Fevereiro´;
    03 : result:= ´Março´;
    04 : result:= ´Abril´;
    05 : result:= ´Maio´;
    06 : result:= ´Junho´;
    07 : result:= ´Julho´;
    08 : result:= ´Agosto´;
    09 : result:= ´Setembro´;
    10 : result:= ´Outubro´;
    11 : result:= ´Novembro´;
    12 : result:= ´Dezembro´;
  end;
end;



Responder

03/05/2005

Crashovewrite

[b:c3fd792b5a]tnaires[/b:c3fd792b5a] muito obrigado por postar mas não estava querendo formatar a data, mesmo assim obrigado, fuçando aqui eu descobri oque estava acontecendo de errado como havia dito troquei o n por result para retornar o resultado, ou seja, o Mês em extenso....


Responder

03/05/2005

Vinicius2k

Colega,

A mesma função, apenas de uma forma mais sucinta. Também evite o uso do Copy neste caso, pois vc pode ter problemas com configurações regionais da máquina. Em substituição utilize MonthOf da unit DateUtils, como segue :

...
uses DateUtils;

function ExtensoMes(n: Integer): String;
const
  aMeses: Array[0..11] of String = (
            ´Janeiro´, ´Fevereiro´, ´Março´, ´Abril´, ´Maio´, ´Junho´,
            ´Julho´, ´Agosto´, ´Setembro´, ´Outubro´, ´Novembro´, ´Dezembro´);
begin
  Result := ´´;
  if (n > 1) and (n < 12) then
    Result := aMeses[n-1];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ExtensoMes(MonthOf(Date)));
end;


T+


Responder

03/05/2005

Crashovewrite

[b:63df3aad16]Vinicius2K[/b:63df3aad16]
Obrigado por Responder tbm gostei da sua clareza no código utilizarei no projeto vlw muito obrigado mesmo.


Responder

03/05/2005

Vinicius2k

Só uma correção :

onde lê-se :
if (n > 1) and (n < 12) then

leia-se :
if (n >= 1) and (n <= 12) then

Da forma que estava, os meses de Janeiro e Dezembro não seriam retornados. Desculpe-me pelo código errado.

T+


Responder

03/05/2005

Rômulo Barros

Colega, A mesma função, apenas de uma forma mais sucinta. Também evite o uso do Copy neste caso, pois vc pode ter problemas com configurações regionais da máquina. Em substituição utilize MonthOf da unit DateUtils, como segue :
...
uses DateUtils;

function ExtensoMes(n: Integer): String;
const
  aMeses: Array[0..11] of String = (
            ´Janeiro´, ´Fevereiro´, ´Março´, ´Abril´, ´Maio´, ´Junho´,
            ´Julho´, ´Agosto´, ´Setembro´, ´Outubro´, ´Novembro´, ´Dezembro´);
begin
  Result := ´´;
  if (n > 1) and (n < 12) then
    Result := aMeses[n-1];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ExtensoMes(MonthOf(Date)));
end;
T+


Boa. Esta aí uma solução bastante simples e pouca utilizada por desenvolvedores. A Clareza do código é essencial para o desenvolvimento em equipe, facilitando assim a compreenção do método pelos desenvolvedores. Bela solulão, Vina !!!! :wink:


Responder

03/05/2005

Massuda

Não seria mais prático usar os valores no array LongMonthNames[] definido em SysUtils? Esse array contem os nomes dos meses no idioma em uso no Windows.


Responder

03/05/2005

Vinicius2k

Não seria mais prático usar os valores no array LongMonthNames[] definido em SysUtils?

Mas com toda certeza seria ! :roll:
function ExtensoMes(n: Integer): String;
begin
  Result := ´´;
  if (n >= 1) and (n <= 12) then
    Result :=  LongMonthNames[n];
end;


Vez por outra, por desconhecimento ou esquecimento, a gente acaba por reinventar a roda... Já fiz isso ´n´ vezes e costumo ´guardar´ como prova... Essa foi uma delas :
{ **** Adiciona meses à uma data fixando o dia
       PS: Legítima reinvenção da roda... a "SysUtils" tem a função
            IncMonth que faz exatamente isso... :\ **** }
function IncMes(AData: TDate; AMeses: Integer): TDate;
var 
  Dia, Mes, Ano, I: Integer;
begin
  Ano := YearOf(AData);
  Mes := MonthOf(AData);
  for I := 1 to AMeses do
  begin
    Inc(Mes);
    if Mes > 12 then
    begin
      Mes := 1;
      Inc(Ano);
    end;
  end;
  Dia := DayOf(AData);
  if (Dia in [29, 30, 31]) and (Mes = 2) then
    if IsLeapYear(Ano) then 
      Dia := 29 
    else Dia := 28;
  if (Dia = 31) and (Mes in [4, 6, 9, 11]) then 
    Dia := 30;
  { **** }
  Result := EncodeDate(Ano, Mes, Dia);
end;


T+


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar