Pourrais-tu envoyer un bout de code de la partie qui pause problème (là où tu fait l'affichage du status) ?
Tu utilise des string et caractères simple ou étendu (étendu dans le sens Wide_Character, Wide_String) ?
Voici un petit example utilisant des Wide_Characters :
with Ada.Wide_Text_IO;
procedure Main is
use Ada.Wide_Text_IO;
begin
Put_Line ("Heart: " & Wide_Character'Val (16#2665#));
Put_Line ("Smiley: " & Wide_Character'Val (16#263B#));
end Main;
voici le code de Put_Status ainsi que les entête du fichier :
with Ada.Text_IO; use Ada.Text_IO;
with P_Variables; use P_Variables;
with P_Navire.list; use P_Navire.list;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Integer_Text_IO;
procedure Put_Status (Navire : T_Navire'Class; Pos : T_Position := Gauche) is
X : Natural;
Y : constant Natural := 15;
begin
if Pos = Gauche
then x := 0;
else x := 39;
end if;
Set_Background (White);
Print (" " & To_String (Navire.Nom), Black, X, Y);
Set_Foreground (Light_Red); Goto_XY (X, Y + 1);
Put (" " & Character'Val (2) & " "); Put_Point (Navire.Coque);
Set_Foreground (Green); Goto_XY (X, Y + 2);
Put (" " & Character'Val (3) & " "); Put_Point (Navire.Equipage);
Goto_XY (X, Y + 3); Put ("Puis:") ; Put_Point (Navire.Puissance);
Goto_XY (X, Y + 4); Put ("Att :") ; Put_Point (Navire.Attaque);
Goto_XY (X, Y + 5); Put ("Cuir:") ; Put_Point (Navire.Cuirasse);
Goto_XY (X, Y + 6); Put ("Def :") ; Put_Point (Navire.Defense);
Goto_XY (X, Y + 7); Put ("Vit :") ; Put_Point (Navire.Vitesse);
end Put_Status;
J'ai également fait un test en faisant une boucle pour afficher tout les caractères et j'ai la même chose pour une bonne partie des cinquante premiers caractères.
Sinon il y a Wide_Wide_Character qui contient l'intégralité d'Unicode (les 17 BMP).
Je te conseillerais du coup d'utiliser les valeurs unicodes plutôt que celles de Windows-437. Je sais que les valeurs viennent de la correction du cours d'Ada, mais ces valeurs ne sont pas correctes pour une utilisation « portable ».
Je t'ai donné les valeurs dans mon message précédent.
J'avais fait tout le cours sur Linux, sauf ce TP et le chapitre sur l'interfaçage. J'ai pu donc voir toutes ce qui n'allait pas dans le cours (il y en a pas trois tonnes, mais il y en a quand même). Mais du coup je suis passé à coté de ce problème vue que je n'ai pas fait ce TP…
je suis sur windows avec un .exe à lancer. Je ne sais pas convertir mon code (ou les paramètres de GPS) pour avoir un programme qui se lit sur une console Linux.
Pour le coup là je n'ai pas la réponse. Tu devrait peut-être tester dans un terminal « linux » (Msys2, mingw, et cie de mémoire).
Ensemble créons l'avenir !
[Tutoriel] Apprendre à programmer avec Ada
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Architecte logiciel - Software craftsmanship convaincu.
Architecte logiciel - Software craftsmanship convaincu.