Transferência de dados através de arquivos .txt - Parte V




Iniciando um novo projeto para transmitir os dados (cont.)


Entrando com código para gerar o arquivo de transferência (cont.)


Para formatar a data e a hora de acordo com o layout usamos a função FormatDateTime do próprio Delphi, como vista na Listagem 1 é bem simples, ela requer dois parâmetros, o primeiro parâmetro é formato de saída desejado e o segundo parâmetro é a Data e/ou Hora que será formatado.

Já para remover o separador decimal dos valores numéricos e fixar os tamanhos desejados para alfanuméricos e numéricos criamos duas funções com os respectivos nomes de RemoverChar e PreencherStr.  Essa função tem que ser declaradas no Private declarations do formulário (Listagem 2).

 

Type

  TFTransf = class(TForm)

    BtnGerar: TBitBtn;

    PBarGerar: TProgressBar;

    SQLConnec: TSQLConnection;

    SQLQuery: TSQLQuery;

    DataSetProv: TDataSetProvider;

    ClientDataSet: TClientDataSet;

    procedure BtnGerarClick(Sender: TObject);

  private

    { Private declarations }

    // Declare as duas funções criadas para esse exemplo aqui

    function PreencherStr(StrEntrada: string; CharPreencher: Char;

      TamRetorno: Integer; LeftPreencher: Boolean): string;

    function RemoverChar(StrEntrada: string; CharRemover: Char): string;

  public

    { Public declarations }

  end;

Listagem 2 – Declaração das funções PreencherStr e RemoverChar

 

As Listagens 3 e 4 mostram os códigos das funções PreencherStr e RemoverChar.  Os dois códigos estão amplamente comentados.

 

{

  Deixa uma string do tamanho desejado

  StrEntrada

    O valor de entrada que será trabalhado

  CharPreencher

    Caractere que será usado para preencher o valor de entrada

  TamRetorno

    Tamanho que deverá ter a variável de retorno

  LeftPreencher

    Informa se o preenchimento será feito do lado

    esquerdo(True) ou direito(False)

 

  Exemplo 1:

    Chamada

      PreencherStr('Tadeu Pereira', '*', 20, False);

    Retorno

      'Tadeu Pereira*******'

 

  Exemplo 2:

    Chamada

      PreencherStr('1', '0', 5, True);

    Retorno

      '00001'

}

function TFTransf.PreencherStr(StrEntrada: string; CharPreencher: Char;

  TamRetorno: Integer; LeftPreencher: Boolean): string;

var

  Cont: Integer;

  Retorno: string;

begin

  // Variável Retorno recebe o valor de entrada da função

  Retorno := StrEntrada;

  // Inicio do loop para deixar o valor de entrada do tamanho

  // informado na chamada da função

  for Cont := 1 to TamRetorno do

    begin

      // Se o tamanho da variável Retorno for maior ou igual

      // ao tam informado na chamada da função sair do loop

      if (Length(Retorno) >= TamRetorno) then Break;

      // Se não for para preecher à esqueda da variável Retorno

      // então variável Retorno recebe seu valor atual acrescido

      // do caractere infomado para preecher o seu valor

      if not(LeftPreencher) then Retorno := Retorno + CharPreencher

      // Caso seja para preecher à esqueda da variável Retorno

      // então variável Retorno recebe o caractere infomado para

      // preecher mais o seu valor atual

      else Retorno := CharPreencher + Retorno;

    end;

  // Retorno da função

  Result := Retorno;

end;

Listagem 3 – Função PreencherStr

 

{

  Remover um caractere da string informada

  StrEntrada

    O valor de entrada que será trabalhado

  CharRemover

    Caractere que será removido do valor de entrada

 

  Exemplo 1:

    Chamada

      PreencherStr('Maria da Silvar', ' ');

    Retorno

      'MariadaSilvar'

 

  Exemplo 2:

    Chamada

      PreencherStr('10,05', DecimalSeparator);

    Retorno

      '1005'

}

function TFTransf.RemoverChar(StrEntrada: string; CharRemover: Char): string;

var

  Cont: Integer;

  Retorno: string;

begin

  // Limpando a variável Retorno

  Retorno := '';

  // Inicio do loop para remover o caractere informado

  // no segundo parâmetro de entrada da função - CharRemover

  for Cont := 1 to Length(StrEntrada) do

    // Se o caractere na posição Cont do parâmetro StrEntrada

    // for diferente do parâmetro CharRemover então variável

    // Retorno recebe seu valor atual acrescido do valor que

    // estar na posição Cont do parâmetro StrEntrada

    if (StrEntrada[Cont] <> CharRemover)

      then Retorno := Retorno + StrEntrada[Cont];

  // Retorno da função

  Result := Retorno;

end;

Listagem 4 – Função RemoverChar

 

Com todo os códigos digitados chegou a hora de testa.  Com o programa compilado clique no botão gerar, depois vá até onde está o executável e abra o arquivo Transf.txt, ele deve estar parecido com a Listagem 5.

 

0200602021811411.0.0

100001111.111.111-11Jose da Silva                                   Rua da Flores, 123

100002222.222.222-22Maria da Silva                                  Rua Sao Pedro, 234

100003333.333.333-33Joao Carvalho                                   Rua Sao Jose, 345

100004444.444.444-44Joana Alencar                                   Rua Padre Cicero, 456

21234567890123Telefone XT-72                                    000000000008399

22345678901234Celular RM-50                                     000000000039050

23456789012345Carregador para celular MP-65                     000000000007800

24567890123456Bateria para celular FL-900                       000000000010205

25678901234567Celular XR-60                                     000000000105055

90000400005                                          

Listagem 5 – Arquivo Transf.txt

 

No próximo artigo será apresentado o projeto para receber os dados. Obrigado!!!

 

Artigo criado por http://www.cassic.com.br/