DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Criando a função para gerar o MD5 – Tutorial de Geração do Bloco VII do PAF-ECF – Parte 02

Veja neste artigo PAF-ECF, vamos criar um procedimento para atender ao bloco VII do roteiro de homologações PAF-ECF.

Conforme comentado na parte anterior do artigo, vamos criar um procedimento para atender ao bloco VII do roteiro de homologações PAF-ECF, em sua versão 1.5 de abril de 2011, aplicável à versão 01.07, onde regulamenta os “Dados Técnicos para Geração da Assinatura Digital EAD”. Anexo VIII do Ato Cotepe 06/08.

 

Sem mais delongas vamos primeiramente ver a função que será responsável pela geração do código MD5, do registro da tabela do banco de dados. Segue abaixo:

 

function Gerar_MD5_Registro_Tabela_Dados(Tabela:TDataSet):String;

var i : Integer;

    AuxSTR, NomeCampo, TipoCampo : String;

begin

  // efetua um loop nos registros da tabela somando uma variávei string

  // para gerar o MF5

  AuxSTR := '';

  for i:=0 to DataSet.Fields.Count - 1 do

  begin

    NomeCampo := UpperCase(DataSet.Fields.Fields[i].FieldName);

    TipoCampo := FieldTypeNames[DataSet.Fields.Fields[i].DataType];

    if NomeCampo <> 'CAMPO_MD5_REGISTRO' then

    begin

      if TipoCampo = 'String' then

         AuxSTR := AuxSTR + DataSet.FieldByName(NomeCampo).AsString;

      if TipoCampo = 'WideString' then

         AuxSTR := AuxSTR + DataSet.FieldByName(NomeCampo).AsString;

      if TipoCampo = 'ftMemo' then

         AuxSTR := AuxSTR + DataSet.FieldByName(NomeCampo).AsString;

      if TipoCampo = 'Integer' then

         AuxSTR := AuxSTR + IntToStr(DataSet.FieldByName(NomeCampo).AsInteger);

      if TipoCampo = 'Smallint' then

         AuxSTR := AuxSTR + IntToStr(DataSet.FieldByName(NomeCampo).AsInteger);

      if TipoCampo = 'Largeint' then

         AuxSTR := AuxSTR + IntToStr(DataSet.FieldByName(NomeCampo).AsInteger);

      if TipoCampo = 'Word' then

         AuxSTR := AuxSTR + IntToStr(DataSet.FieldByName(NomeCampo).AsInteger);

      if TipoCampo = 'Float' then

         AuxSTR := AuxSTR + FloatToStr(DataSet.FieldByName(NomeCampo).AsFloat);

      if TipoCampo = 'Currency' then

         AuxSTR := AuxSTR + FloatToStr(DataSet.FieldByName(NomeCampo).AsFloat);

      if TipoCampo = 'FMTBcd' then

         AuxSTR := AuxSTR + FloatToStr(DataSet.FieldByName(NomeCampo).AsFloat);

      if TipoCampo = 'Date' then

         AuxSTR := AuxSTR + DateToStr(DataSet.FieldByName(NomeCampo).AsDateTime);

      if TipoCampo = 'DateTime' then

         AuxSTR := AuxSTR + DateToStr(DataSet.FieldByName(NomeCampo).AsDateTime);

      if TipoCampo = 'Time' then

         AuxSTR := AuxSTR + DateToStr(DataSet.FieldByName(NomeCampo).AsDateTime);

    end;    

  end;

  // retorna o resultado

  Result :=  MD5Print(MD5String(AuxSTR));

end;

 

É importante ressaltar, que onde se refere no código “CAMPO_MD5_REGISTRO”, indica que deverá ser criado um campo na tabela onde se irá realizar o controle de alteração dos dados, para armazenar o código MD5 gerado pela função apresentada acima.

 

Observe que nestes códigos, este campo criado na tabela não fará parte da composição do código MD5 (if NomeCampo <> 'CAMPO_MD5_REGISTRO' then), pois o mesmo será gravado neste registro, após a geração, e iria fazer com que sempre houvesse divergência no momento de verificar as possível alterações.

 

De posse deste código, basta programar na sua aplicação e chama-lo para gerar o MD5 após a conclusão do preenchimento dos campos do registro. Em geral no evento BeforePost do ClientDataSet, e gravar o resultado no campo criado para armazena-lo.

 

Na próxima parte do artigo, vou comentar sobre a parte de comparação do código MD5.

 

Até lá!

 





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Luis Carlos Godinho

Programador formado em 1995, pela ETEIT – Escola técnica da UNIVALE. Atualmente trabalhando com a plataforma Delphi. Tem se dedicado nos últimos anos, ao desenvolvimento de aplicações PAF-ECF, SPED fiscal e NFe.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03