Re: Devoir de vacances : déchiffra ge de Streams : problème résolu
Philippe Laval <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Organization | CNRS |
| Message-ID | <[email protected]> |
Jeffrey Carter a écrit : > Philippe Laval wrote: > >> >> Le problème c'est Comment convertir la valeur de Length en entier >> pour servir de borne supérieure à la boucle Get_String ? > > > Il n'y a pas de conversion necessaire. Byte est un type numeric, donc > I de boucle est de type Byte. > >> Avec Integer (Length), ou Byte'Val (Length), on ne trouve pas la >> bonne valeur : la première ligne du fichier à lire contient 66 >> caractères, or on trouve Length = 114, ce qui n'est pas la bonne >> valeur ni en octal (on devrait trouver dans ce cas trouver 102), ni >> en hexadécimal (42). > > > Je ne compdrends pas. Byte'Image (Length) = " 114", mais l'octet dans > le fichier est 66? Ou peut-etre le fichier contient les longeurs mauvais? > > Dan ce dernier cas, on peut faire rien avec les longeurs et terminer > chaque String quand on trouve le prochain 00 (ou le fin de fichier). > Je viens de trouver une solution : il faut lire le fichier avec Ada.Streams.Stream_IO, chercher le premier ASCII.Nul avec Character'Read, et lire ensuite le byte suivant (la longueur L de la ligne à lire) avec Short_Short_Integer'Read. On peut alors faire une boucle de 1 à Integer (L) avec Character'Read pour enregistrer les caractères corrects et seulement eux. N.B. Ce fichier est bizarre car il a été originellement enregistré sur une machine HP9826 avec un processeur Motorola 68000 (Big Endian), puis converti sur une station HP qui je pense aussi avait un Motorola 68000, puis récupéré je ne sais plus comment sur un PC à base de x86 (Little Endian) sous Windows. Chaque ligne du fichier contient un caractère aléatoire de trop toutes les fois que la longueur réelle (celle mise dans L) est impaire... Merci pour toutes vos réponses, qui m'ont permis de réviser les streams, que j'avais peu utilisés jusqu'ici. -- Philippe Laval Observatoire océanologique Villefranche-sur-Mer Cedex (France) _______________________________________________ Site WWW de l'association Ada-France: http://www.ada-france.org/ [email protected] http://www.ada-france.org/mailman/listinfo/ada-france
smime.p7s
(application/x-pkcs7-signature, 3.5 KB) - not displayed