Provavelmente caractere inválido. Talvez por exemplo & CIA LTDA. O "E" comercial, ou macro do Harbour, não vale.
Em todo caso, você pode facilmente criar um programa de teste pra validar caracteres, e ir fazendo por exclusão.
Por exemplo:
Código: Selecionar todos
FUNCTION Main( cFileName )
LOCAL cText, cLetra
ctext := MemoRead( cFileName )
FOR EACH cLetra IN cText
DO CASE
CASE cLetra $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
CASE cLetra $ "0123456789"
OTHERWISE
? cLetra, Asc( cLetra ), cLetra:__EnumIndex, Substr( cText, cLetra:__EnumIndex - 20, 40 )
ENDCASE
NEXT
RETURN NIL
Nota:
:__EnumIndex equivale ao "contador", de 1 a 999999 (tamanho do arquivo), que corresponde a posição da letra em questão no arquivo
Substr() - é pra mostrar o texto que corresponde a 40 caracteres, começando 20 posições antes da atual, assim dá pra ver o texto
É só ir acrescentando mais letras conforme forem aparecendo.
Vai ter aspas, mais, menos, ponto, vírgula, <, >, etc.
O que sobrar vai ser algo a verificar.
Lembre-se do "E" comercial que é inválido, tipo "ANTONIO & CIA LTDA". Eu troquei por E há muito tempo e ninguém reclamou. "ANTONIO E CIA LTDA".
Nota2: criei o fonte durante a digitação do post, então não foi testado pra ver se estava correto.