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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.