Nesse artigo vou explicar uma coisa simples porém de grande utilidade quando temos que montar arquivos texto, como no padrão CNAB e entre outros.
Em alguns padrões temos um tamanho
entre colunas que devemos respeitar e que não podemos simplesmente enviar o
valor no tamanho original, temos que enviar o valor no tamanho do campo como
exigido pelo manual, em fim, veremos na prática como criar uma classe para
fazer essa formatação, e poder usar essa classe em outros forms.
Crie um novo Projeto (File/New/VCL Forms Application – Delphi)
Coloque no Form:
3 Edits e nomeie como: EdtValorOriginal, EdtTamanho e EdtResultado.
3 Label e na propriedade Caption de cada um coloque: Valor Original, Tamanho e Valor Formatado.
2 Button e nomeie como BtnFormatEsq e o Caption Formatar à Esquerda e BtnFormatDir e o Caption Formatar à Direita.
Organize
como abaixo:
Crie uma pasta e salve o Projeto com o nome que quiser.
Adicione uma Unit ao projeto e salve com o nome UFormatacao (File/New/Unit-Delphi)
Codifique a Unit Formatacao como abaixo:
unit UFormatacao;
interface
function ZerosEsquerda(Texto:String ; Quant:Integer): String;
function ZerosDireita(Texto:String ; Quant:Integer): String;
implementation
//função que irá formatar com zeros a esquerda.
function ZerosEsquerda(Texto:String ; Quant:Integer): String;
var
I, Tamanho : Integer;
Auxiliar: string;
begin
Auxiliar := '';
Tamanho := Length(Texto);
for I := Tamanho to (Quant - 1) do
Auxiliar := Auxiliar +'0';
Result := Auxiliar + Texto;
end;
//função que irá formatar com zeros a direita.
function ZerosDireita(Texto:String ; Quant:Integer): String;
var
I, Tamanho : Integer;
Auxiliar: string;
begin
Auxiliar := '';
Tamanho := Length(Texto);
for I := Tamanho to (Quant - 1) do
Auxiliar := Auxiliar +'0';
Result := Texto + Auxiliar;
end;
end.
Volte ao Formulário Principal e dê uses na Unit UFormatacao. (Alt+F11).
Implemente os seguintes códigos nos botões:
procedure TFrmFormatar.BtnFormatEsqClick(Sender: TObject);
begin
EdtResultado.Text := ZerosEsquerda(EdtValorOriginal.Text, StrToInt(EdtTamanho.Text));
end;
procedure TFrmFormatar.BtnFormatDirClick(Sender: TObject);
begin
EdtResultado.Text := ZerosDireita(EdtValorOriginal.Text, StrToInt(EdtTamanho.Text));
end;
Com esse método você pode enviar o texto e a
quantidade de caracteres a ser formatada, e utilizar para diversas formatações
enviando o texto e a quantidade.
Compile o projeto e veja o resultado
Até a próxima.
Marco A. S. Carvalho