Coloquei estas informações em um tópico ja discutido aqui no forum dia 29/04 mas vi que ninguem se manisteu e por isso estou colocando aqui em um novo tópico para os administradores verificarem pois ainda continua com um pequeno bug no trecho a seguir :
{Descontos ISS}
PosI := Pos('DS',RetCMD); // aqui esta o problema (sempre vai existir)
if PosI > 0 then
begin
PosI := PosI + 5 ; {DS }
V := V + StrToFloatDef(Trim(Copy(RetCMD,PosI,18)),0)/100;
end;
Result := Result +'TotalDescontos = '+FormatFloat('#0.00',V)+ sLineBreak;
... esta posição do 'DS' normalmente sempre vai existir , pois uma parte da string de retorno o 'DS' sempre aparece , acredito que é o número de série da MFD , só não deu erro ainda porque por coicidencia normalmente o retorno das posições estão retornando Zero , futuramente se for um número maior ou caracteres alfa , com certeza daria pau .
Minha solução foi :
PosI := Pos('DS ',RetCMD); // um espaço na frente do S funcionou , e acabei colocando este espaço tambem nas demais opções como cancelamento , acrescimo , etc.. , já que na string de retorno tem um espaço na frente desses trechos base .
Abraço a todos .
Marcelo.