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