Règles du forum

Le langage Ada uniquement, pas les compilateurs. Les questions de sémantique et de langage et les questions techniques liées à une application en particulier, son deux choses différentes. Si nécessaire, un forum sur GNAT et les autres compilateurs, tel JanusAda, sera ouvert.

Auteur Message
Beau Parleur
Avatar de l’utilisateur
Bonjour,
J'ouvre un nouveau sujet pour que le contenu corresponde au sujet.

J'essaie désespérément d'écrire avec Ada un fichier lisible par ailleurs, contenant des caractère accentués et le symbole de l'euro '€'.

Voici mon code qui écrit un caractère dans un fichier nommé "tmp2.txt".

Source ada : 

with Ada.Strings.UTF_Encoding.Wide_Strings;
with Ada.Wide_Text_Io;
use Ada.Wide_Text_Io;
procedure char_pos is

char : Wide_Character;
File : File_Type;
begin

Get_Immediate(Char);

Put(": " & Char);

Create(File, Out_File, "tmp2.txt");

Ada.Wide_Text_Io.Put(File, Ada.Strings.UTF_Encoding.Wide_Strings.Decode(Ada.Strings.UTF_Encoding.BOM_16));


Put(File, (Char & ""));

Close(File);

end Char_Pos;


voici les entrées et sortis sur ma console Gnu/Linux dans un shell (bash) :
Citation : 
gnatmake -gnatW8 char_pos.adb
gcc-4.9 -c -gnatW8 char_pos.adb
gnatbind -x char_pos.ali
gnatlink char_pos.ali

./char_pos
: é

cat tmp2.txt



Je dirais ici, que j'ai tout essayé, sauf la bonne pratique. Mais quelle est- elle ?

Merci pour votre investissement.
Profil
Beau Parleur
Avatar de l’utilisateur
Re- Bonjour,

J'ai posé la question à mon professeur de programmation.
Et j'ai trouvé dans sa réponse, dans un document sur les accents avec Ada la réponse à la question.

Dans le paquetage Wide_Text_Io, que je connais trop peu, les procédure Create et Open on un paramètre Form qui permet de spécifier la méthode d'encodage.

J'ai donc créer un fichier avec pour paramètre formel de Form => "WCEM=8".

Et ça marche.

Merci pour votre investissement et votre patience.
Profil