Por vezes surge a necessidade de escrever uma data por extenso, por exemplo na emissão de documentos como cheques, relatórios, etc.
A procedure abaixo, realiza esta tarefa de forma simples e rápida, permitindo inclusive retornar o dia da semana.
procedure TForm1.Button1Click(Sender: TObject);
var nrdia: Integer;
diasemana: array[1..7] of String;
meses: array[1..12] of String;
dia, mes, ano: Word;
begin
{Preenchendo o array diasemana com os dias da semana ...}
diasemana[1]:= 'Domingo';
diasemana[2]:= 'Segunda-feira';
diasemana[3]:= 'Terça-feira';
diasemana[4]:= 'Quarta-feira';
diasemana[5]:= 'Quinta-feira';
diasemana[6]:= 'Sexta-feira';
diasemana[7]:= 'Sábado';
{Preenchendo o array meses com dos meses do ano ... }
meses[1]:= 'Janeiro';
meses[2]:= 'Fevereiro';
meses[3]:= 'Março';
meses[4]:= 'Abril';
meses[5]:= 'Maio';
meses[6]:= 'Junho';
meses[7]:= 'Julho';
meses[8]:= 'Agosto';
meses[9]:= 'Setembro';
meses[10]:= 'Outubro';
meses[11]:= 'Novembro';
meses[12]:= 'Dezembro';
{Decodificando a data }
DecodeDate(DateTimePicker1.Date ,ano,mes,dia);
nrdia:= DayOfWeek(DATE);
{Exibindo a data por extenso em uma Edit }
Edit1.Text:= diasemana[nrdia]+', '+INTTOSTR(dia)+' de '+meses[mes]+' de '+INTTOSTR(ano);
end;
Esta é um a dica super simples, mas bastante funcional:
Abraço e até o próximo post.
Geversom - Software Developer
Um espaço para compartilhar conhecimentos.
quarta-feira, 17 de agosto de 2011
segunda-feira, 18 de julho de 2011
Importando arquivo CSV (Texto Delimitado)
A procedure abaixo listada permite ler qualquer arquivo de texto delimitado, quer seja por virgula, ponto e vírgula ou qualquer outro delimitador. Para tanto basta informar corretamente o delimitador na função aninhada MontaValor.
No exemplo abaixo as informações contidas no arquivo texto serão gravadas em dois ClientDataSet.
procedure TForm1.ImportarCSV;
var ArquivoCSV : TextFile;
Contador, I : Integer;
Linha : String;
// Lê Linha e Monta os valores
function MontaValor : String;
var ValorMontado : String;
begin
ValorMontado := '';
inc(I);
While Linha[I] >= ' ' do
begin
If Linha[I]= ';' then // vc pode usar qualquer delimitador ... eu estou usando o ";"
break;
ValorMontado := ValorMontado + Linha[I];
inc(I);
end;
result := ValorMontado;
end;
begin
// Carregando o arquivo ...
AssignFile(ArquivoCSV, 'c:\Nome_do_Arquivo');
try
Reset(ArquivoCSV);
Readln(ArquivoCSV, Linha);
Contador := 1;
while not Eoln(ArquivoCSV) do
begin
if Contador = 1 then // Primeira Linha do arquivo (Pedido);
begin
I := 0;
cdsPedido.Append;
cdsPedidoCodigoCliente.AsString := MontaValor;
cdsPedidoNomeDoCliente.AsString := MontaValor;
cdsPedido.Post;
end
else
begin
// Demais Linhas (Itens do Pedido )
I := 0;
cdsItensDoPedido.Append;
cdsItensDoPedidoCodigoProduto.AsString := MontaValor;
cdsItensDoPedidoNomeDoProduto.AsString := AnsiUpperCase(MontaValor);
cdsItensDoPedidoQuantidade.AsFloat := StrToFloat(MontaValor);
cdsItensDoPedidoPreco.AsCurrency := StrToCurr(MontaValor);
cdsItensDoPedido.Post;
end;
Readln(ArquivoCSV, Linha);
Contador := Contador + 1;
end;
finally
CloseFile(ArquivoCSV);
end;
end;
Um grande abraço e até o próximo post.
No exemplo abaixo as informações contidas no arquivo texto serão gravadas em dois ClientDataSet.
procedure TForm1.ImportarCSV;
var ArquivoCSV : TextFile;
Contador, I : Integer;
Linha : String;
// Lê Linha e Monta os valores
function MontaValor : String;
var ValorMontado : String;
begin
ValorMontado := '';
inc(I);
While Linha[I] >= ' ' do
begin
If Linha[I]= ';' then // vc pode usar qualquer delimitador ... eu estou usando o ";"
break;
ValorMontado := ValorMontado + Linha[I];
inc(I);
end;
result := ValorMontado;
end;
begin
// Carregando o arquivo ...
AssignFile(ArquivoCSV, 'c:\Nome_do_Arquivo');
try
Reset(ArquivoCSV);
Readln(ArquivoCSV, Linha);
Contador := 1;
while not Eoln(ArquivoCSV) do
begin
if Contador = 1 then // Primeira Linha do arquivo (Pedido);
begin
I := 0;
cdsPedido.Append;
cdsPedidoCodigoCliente.AsString := MontaValor;
cdsPedidoNomeDoCliente.AsString := MontaValor;
cdsPedido.Post;
end
else
begin
// Demais Linhas (Itens do Pedido )
I := 0;
cdsItensDoPedido.Append;
cdsItensDoPedidoCodigoProduto.AsString := MontaValor;
cdsItensDoPedidoNomeDoProduto.AsString := AnsiUpperCase(MontaValor);
cdsItensDoPedidoQuantidade.AsFloat := StrToFloat(MontaValor);
cdsItensDoPedidoPreco.AsCurrency := StrToCurr(MontaValor);
cdsItensDoPedido.Post;
end;
Readln(ArquivoCSV, Linha);
Contador := Contador + 1;
end;
finally
CloseFile(ArquivoCSV);
end;
end;
Um grande abraço e até o próximo post.
Assinar:
Postagens (Atom)