DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Conhecendo as variaveis LongMonthNames, ShortMonthNames, LongDayNames e ShortDayNames no Delphi e Lazarus

Fala galera do Show Delphi, tudo beleza?

Vocês já conheciam a variaveis LongMonthNames, ShortMonthNames, LongDayNames e ShortDayNames?

Elas representam vetores (arrays) de string que contém os nomes dos meses e dias da semana escritos por extenso.

Como segue a lista a baixo:

LongMonthNames: Nomes de Mês completos.
ShortMonthNames: Nomes de Mês abreviados;
LongDayNames: Nomes de dia da semana completos;
ShortDayNames: Nomes de dia da semana abreviados;

O mais interessante é que os nomes já vem na mesma linguagem do sistema operacional, assim não precisamos nos preocupar em casos de aplicativos multi linguagens.

Vejamos como ela funciona:
SysUtils.FormatSettings.LongMonthNames[10] equivale a “outubro” – no caso do sistema operacional em português.
SysUtils.FormatSettings.ShortMonthNames[11] – retorna “nov”
SysUtils.FormatSettings.LongDayNames[1] – retorna “domingo”
SysUtils.FormatSettings.ShortDayNames[6] – retorna “sex”

Ou seja, são arrays que já possuem as informações dos nomes dos meses e dias da semana.

Agora vamos ver na prática!

Exemplo em Lazarus e Delphi até a versão 2010

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
 
  public
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var
  I : Integer;
  vTexto : string;
begin
  { Nomes de Mês completos }
  vTexto := '';
  for I := 1 to 12 do
  begin
    vTexto := vTexto + SysUtils.FormatSettings.LongMonthNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de Mês abreviados }
  vTexto := '';
  for I := 1 to 12 do
  begin
    vTexto := vTexto + SysUtils.FormatSettings.ShortMonthNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de dia da semana completos }
  vTexto := '';
  for I := 1 to 7 do
  begin
    vTexto := vTexto + SysUtils.FormatSettings.LongDayNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de dia da semana abreviados }
  vTexto := '';
  for I := 1 to 7 do
  begin
    vTexto := vTexto + SysUtils.FormatSettings.ShortDayNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
end;
 
end.

Em “Delphis” novos, muda um pouquinho.

Exemplo em versões do Delphi a partir do XE, testado até o Delphi 10.3 Rio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  vTexto: string;
  Fmt: TFormatSettings;
begin
  Fmt := TFormatSettings.Create;
 
  { Nomes de Mês completos }
  vTexto := '';
 
  for I := 1 to 12 do
  begin
    vTexto := vTexto + Fmt.LongMonthNames[I] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de Mês abreviados }
  vTexto := '';
  for I := 1 to 12 do
  begin
    vTexto := vTexto + Fmt.ShortMonthNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de dia da semana completos }
  vTexto := '';
  for I := 1 to 7 do
  begin
    vTexto := vTexto + Fmt.LongDayNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
 
  { Nomes de dia da semana abreviados }
  vTexto := '';
  for I := 1 to 7 do
  begin
    vTexto := vTexto + Fmt.ShortDayNames[i] + ^M;
  end;
 
  ShowMessage(vTexto);
end;
 
end.

Em ambos os casos, precisamos declarar SysUtils na seção uses.

Nos exemplos acima, o resultado da mensagem para um sistema operacional em português será:

Com LongMonthNames
janeiro
fevereiro
março
abril
maio
junho
julho
agosto
setembro
outubro
novembro
dezembro

Com ShortMonthNames
jan
fev
mar
abr
mai
jun
jul
ago
set
out
nov
dez

Com LongDayNames
domingo
segunda-feira
terça-feira
quarta-feira
quinta-feira
sexta-feira
sábado

E por fim, com ShortDayNames
dom
seg
ter
qua
qui
se
sab

Como de costume também criamos uma vídeo aula para ajudar no entendimento do post.

Utilizamos como pesquisa o seguinte post:
https://stackoverflow.com/questions/27358545/longmonthnames-usage-in-delphi-xe2-and-delphi-xe7

Certo pessoal, acredito que tenha ficado bem detalhado u funcionamento destas variáveis e espero que seja útil a todos.

Dúvidas ou sugestões? Deixe o seu comentário!

Uma abraço e até a próxima. Valeu!

Facebook Comments Box
  • Giovani Da Cruz
  • 4.002 views
  • 1 comentários
  • 3 de outubro de 2019

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Uma resposta para “Conhecendo as variaveis LongMonthNames, ShortMonthNames, LongDayNames e ShortDayNames no Delphi e Lazarus”

  1. emailx45 disse:

    Atualmente, em RAD Studio 10.3.3, ou desde edition XE ou XE7, nao tenho estas versions instaladas no momento, eu uso o seguinte:

    var
    lFS : TFormatSettings;
    lTexto: string;
    begin
    Memo1.Clear;
    //
    // Esta classe não precisa liberar memoria (FREE)
    lFS := TFormatSettings.Create(‘pt-BR’); // ou qualquer outro país siglas ou através do seu “TLocaleID” veja no Help!
    //
    for lTexto in lFS.ShortMonthNames do
    Memo1.Lines.Add(‘Mês – nomes curtos = ‘ + lTexto);
    //
    for lTexto in lFS.LongMonthNames do
    Memo1.Lines.Add(‘Mês – nomes longos = ‘ + lTexto);
    //
    for lTexto in lFS.ShortDayNames do
    Memo1.Lines.Add(‘Dias – nomes curtos = ‘ + lTexto);
    //
    for lTexto in lFS.LongDayNames do
    Memo1.Lines.Add(‘Dias – nomes longos = ‘ + lTexto);
    //
    // aqui, usando a propriedade “Invariant” para exemplos acima
    // você pode obter o “default” para as definições do idioma English, quando não alterado!!!
    // caso contrário, você obterá os valores de acordo com o seu MSWindows
    // configurações do seu país
    //
    // Outra coisa, por padrão, “o primeiro dia da semana” é definido pelo MSWindows,
    // então você pode definir manualmente e temporariamente esta definição ou
    // alterar no seu MSWindows de forma mais “definitiva” se é que me entende!
    //
    for lTexto in lFS.Invariant.ShortMonthNames do
    Memo1.Lines.Add(‘Mês – nomes curtos = ‘ + lTexto);
    //
    // o Texto estará em seu idioma, naturalmente!!!
    //
    lFS.ShortDayNames[1] := ‘Mon’;
    //
    Memo1.Lines.Add(lfs.Invariant.ShortDayNames[1]); // Domingo é o primeiro dia padrão “invariante” em Inglês
    //
    Memo1.Lines.Add(lfs.ShortDayNames[1]); // Segunda

    end;

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados