Erreurs cachées dans fichiers texte .txt

Résolu/Fermé
lativ - 13 juin 2016 à 18:35
 lativ - 15 juin 2016 à 10:38
Bonjour,

Je rencontre un problème curieux : j'ai écrit moi-même (sous Delphi) un programme qui traite des fichiers texte afin d'en tirer différentes informations. Tout fonctionnait très bien depuis quelques années, et brusquement plantage. J'ai examiné mon fichier texte, et suis parvenu à identifier la ligne qui faisait planter, en la supprimant le logiciel fonctionnait de nouveau. Alors j'ai retapé à la main la ligne qui faisait planter (en vérifiant soigneusement caractère par caractère), et maintenant ça ne plante plus!
Explication du mystère?
A voir également:

3 réponses

Utilisateur anonyme
13 juin 2016 à 20:08
Sans le fichier erronné en question ça va être compliqué de répondre

Peut-être un caractère non imprimable, un problème d'encodage, un copier/coller avec une erreur d'écriture (disque dur défaillant), ça peut venir de pas mal d'endroits.

Si tu as à nouveau cette erreur copie le fichier defectueux AVANT de corriger l'erreur pour pouvoir faire une comparaison octet par octet à posteriori
0
Je ne pense pas qu'il s'agisse d'une défaillance de disque dur ou similaire car le fichier texte en question s'ouvre sans problème dans le bloc notes. Le bloc notes ignorerait-il les erreurs CRC? J'ai conservé le fichier défectueux et essayé une comparaison octet par octet à l'aide de Hexedit, la zone suspecte semble identique.
0
Utilisateur anonyme
14 juin 2016 à 17:18
pourrai-tu poster ces deux fichiers ?
0
lativ > Utilisateur anonyme
14 juin 2016 à 17:45
Le fichier provoquant l'erreur est : http://vital.chauve.free.fr/calendtmp.txt
Le fichier corrigé est : http://vital.chauve.free.fr/calend.txt
les fichiers sont différents à partir de la ligne 107, mais ce ne sont pas les lignes 107 et suivantes qui provoquaient l'erreur, ce sont les lignes 102 à 104.
Le fichier texte contient des échéances à satisfaire (heure en format hh:mm) ou déjà satisfaites (heure en format hhhmm), et le logiciel a pour fonction d'envoyer un avertissement s'il existe des échéances à moins de huit jours non satisfaites. Après l'avertissement (s'il y a lieu) le logiciel propose d'ouvrir le fichier texte dans le bloc notes pour le mettre à jour.
Merci de vous intéresser à mon problème.
0
Utilisateur anonyme
14 juin 2016 à 18:05
Le premier lien mène à une erreur 404
0
lativ > Utilisateur anonyme
14 juin 2016 à 18:37
effectivement il y a une erreur, les URL correctes sont :
http://vital.chauve.free.fr/tmp/calendtmp.txt
et
http://vital.chauve.free.fr/tmp/calend.txt
0
Utilisateur anonyme
14 juin 2016 à 20:28
Il y a bien une différence d'encodage entre les fichiers :

(ci dessous, "error" est le fichier déclenchant l'erreur et "clean" le fichier sans erreur ) :

$file error
error: ISO-8859 text
$file clean
clean: Non-ISO extended-ASCII text, with CRLF line terminators



Quand on fait un diff binaire :



On voit que la version "clean" utilise "0D 0A" pour un retour à la ligne -> windows
Alors que la version "error" utilise uniquement "0A", ce qui ressemble plutot à du unix.

Les fichiers ont été créés sur des machines différentes ? ou des éditeurs de textes différents qui font chacun à leur sauce ?
0
merci pour tout.
Il y a bien quelques différences au début du fichier, mais ce n'étaient pas elles qui provoquaient l'erreur, à l'offset 1158h il y a un espace devant des caractères de tabulation, ainsi la ligne commence par un espace, ce qui ne plaît pas à mon programme, insuffisamment blindé. Je viens bien sûr de le corriger.
Mais ce qui est traître c'est que si on met un espace avant une tabulation, le bloc notes ne montre aucune différence!
0