Então, creio que não deva mudar para 15 dígitos não, pois ainda não tenho certeza se em todos modelos vão vir 15 dígitos, na minha opinião deveria comparar das 2 formas
Sugestão:
________________________________________________________________________________________________
FileMask := FilePath + Prefixo + Trim(NumSerie) + '_' +
FormatDateTime('yyyymmdd',Now ) + '_*.TXT'; // Nome do arquivo retornado pela DLL com número de série correto
FileMask2:= FilePath + Prefixo + Copy(Trim(NumSerie),1,15) + '_' +
FormatDateTime('yyyymmdd',Now ) + '_*.TXT'; // Nome do arquivo retornado pela DLL com número de série constando apenas os 15 primeiros caracteres.
Arquivos := TStringList.Create;
OldAtivo := Ativo ;
try
DeleteFile( NomeArquivo );
DeleteFiles( FileMask );
DeleteFiles( FileMask2 );
AbrePortaSerialDLL( FilePath ) ;
Resp := xBematech_FI_ArquivoMFD( '', DiaIni, DiaFim, 'D', Prop, Tipo,
cChavePublica, cChavePrivada, 1 ) ;
if (Resp <> 1) then
raise EACBrECFErro.Create( ACBrStr( 'Erro ao executar xBematech_FI_ArquivoMFD.'+sLineBreak+
AnalisarRetornoDll(Resp) )) ;
FindFiles( FileMask, Arquivos );
if Arquivos.Count < 1 then Begin
FindFiles( FileMask2, Arquivos );
if Arquivos.Count < 1 then Begin
raise EACBrECFErro.Create( ACBrStr( 'Erro na execução de xBematech_FI_ArquivoMFD.'+sLineBreak+
'Arquivo: "'+NomeArquivo + '" não gerado' )) ;
End;
End;
RenameFile( Arquivos[0], NomeArquivo );
finally
Arquivos.Free;
FechaPortaSerialDLL( OldAtivo );
end;
________________________________________________________________________________________________
Em vermelho o que eu mudei. Desta forma da certo tanto se o nome do arquivo retornar com 15 dígitos, quanto com 20 dígitos