Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

Ao realizar a leitura de um arquivo OFX do banco santander, está sendo apresentado a mensagem Invalid argument to date enconde.

Verificado que o campo de data do arquivo não está com data e hora, há data e digitos(fator), o que gera o erro, pois tem uma função isUTC que faz um validação data ou fator.

Realizei uma alteração verificando o tomanho da texto do campo, entrando ou não na função e deu certo. 

Estou anexando a modifição realizada para verificação.

 

function IsUTC(const LLine: string; var LFuso: Extended): Boolean;
    var
      LInicio, LFim: integer;
      LTime: String;
    begin
      Result := Pos('GMT', LLine) > 0;
      if Result then
      begin
        LInicio := Pos('[', LLine);
        LFim := Pos(':', LLine);
        LFuso := StrToFloat(Copy(LLine, LInicio + 1, LFim - LInicio - 1));
        if Length(Copy(LLine, 0, LInicio - 1)) > 12 then ---> LINHA ADICIONADA
        begin
          LTime := Copy(LLine, 7, LInicio - 7);

          // Quando for mais que 6 dígitos, indica ser um horário e não um fator.
          // Assim, os dígitos 7 e 8 são o dia como em um datetime padrão.
          Result := (Length(LTime) <= 6);
        end
        else
          Result := False;
      end
      else
        LFuso := 0;
    end;

ACBrOFX.pas

Postado
Em 24/09/2024 at 14:18, Igor Cibiac disse:

Ao realizar a leitura de um arquivo OFX do banco santander, está sendo apresentado a mensagem Invalid argument to date encode.

Verificado que o campo de data do arquivo não está com data e hora, há data e digitos(fator), o que gera o erro, pois tem uma função isUTC que faz um validação data ou fator.

Realizei uma alteração verificando o tomanho da texto do campo, entrando ou não na função e deu certo. 

Estou anexando a modifição realizada para verificação.

 

function IsUTC(const LLine: string; var LFuso: Extended): Boolean;
    var
      LInicio, LFim: integer;
      LTime: String;
    begin
      Result := Pos('GMT', LLine) > 0;
      if Result then
      begin
        LInicio := Pos('[', LLine);
        LFim := Pos(':', LLine);
        LFuso := StrToFloat(Copy(LLine, LInicio + 1, LFim - LInicio - 1));
        if Length(Copy(LLine, 0, LInicio - 1)) > 12 then ---> LINHA ADICIONADA
        begin
          LTime := Copy(LLine, 7, LInicio - 7);

          // Quando for mais que 6 dígitos, indica ser um horário e não um fator.
          // Assim, os dígitos 7 e 8 são o dia como em um datetime padrão.
          Result := (Length(LTime) <= 6);
        end
        else
          Result := False;
      end
      else
        LFuso := 0;
    end;

ACBrOFX.pas 11.08 kB · 0 downloads

Bom dia!

Conseguem analisar a questão?

  • Moderadores
Postado
23 horas atrás, Igor Cibiac disse:

Bom dia!

Conseguem analisar a questão?

 Seu arquivo está com muitas diferenças no svn
faça copia do seu restaure ao estado que está no svn

e após aplique sua mudança e anexa novamente veja:

 

image.png

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.