[Résolu][GTK]Utiliser la fonction Get_text

Utiliser la fonction Get_text [Résolu][GTK] - Ada - Programmation

Marsh Posté le 13-12-2015 à 18:30:47    

Bonjour ,
 
Voici un code qui se compile et fonctionne .
Seulement les conditions dans le bloc de déclaration sont ignorés .
 
Pourquoi ???
 
Aussi , certains pourront trouver ça étrange , mais pour un autre programme uniquement avec la lib Ada.text_io , la function  Get_Line utilisé dans un bloc comme Get_text ci dessous , fonctionnait trés bien et rien n'était ignoré dans le bloc !!   :pt1cable:  
 

Code :
  1. WITH Gtk.Main ;          USE Gtk.Main ;
  2. WITH Gtk.Window ;        USE Gtk.Window ;
  3. WITH Gtk.Enums ;         USE Gtk.Enums ;
  4. WITH Gtk.Button ;        USE Gtk.Button ;
  5. WITH Gtk.Alignment ;     USE Gtk.Alignment ;
  6. WITH Gtk.Box ;           USE Gtk.Box ;
  7. WITH Gtk.Gentry;    USE Gtk.Gentry;
  8. with Ada.text_io;
  9.  
  10. PROCEDURE prototype IS
  11.  
  12. -------------------------------
  13.   -- VARIABLES --    |
  14. -----------------------------------------------------------
  15.   win : Gtk_window ;
  16.  
  17.   Btn1, Btn2 ,Btn3  : Gtk_Button ;
  18.  
  19.   alignG, alignM ,alignD  : Gtk_Alignment ;
  20.  
  21.   Boite  : Gtk_VBox ;
  22.  
  23.   Boutons :  Gtk_HBox ;
  24.      
  25.   space : Gtk_Entry ;
  26.      
  27. -----------------------------------------------------------
  28. BEGIN
  29.  
  30.   Init ;
  31.  
  32. --------------------
  33.   -- NEW --   |
  34. -------------------------------------------
  35.  
  36.   Gtk_New(win);  
  37.  
  38.   Gtk_New(space);
  39.  
  40.   Gtk_New(Btn1, "Bouton 1" ) ;
  41.   Gtk_New(Btn2, "Bouton 2" ) ;
  42.   Gtk_New(Btn3, "Bouton 3" ) ;
  43.  
  44.   Gtk_New(alignG,0.0,1.0,1.0,1.0);
  45.   Gtk_New(alignM,0.5,1.0,1.0,1.0);
  46.   Gtk_New(alignD,1.0,1.0,1.0,1.0);
  47.  
  48.  Gtk_New_VBox
  49.  (Boite, homogeneous => false, Spacing => 0) ;
  50.  
  51.  Gtk_New_HBox
  52.  (Boutons, homogeneous => false, Spacing => 0) ;
  53.      
  54. --------------------------------------------
  55.  
  56.   Boite.Pack_Start(space);
  57.   Boite.Pack_Start(Boutons);
  58.   Boutons.Pack_Start(alignG);
  59.   Boutons.Pack_Start(alignM);
  60.   Boutons.Pack_Start(alignD);
  61.  
  62.  
  63. ---------------------------------
  64. --  Add                    |
  65. --------------------------------------------
  66.  
  67.   alignG.add(Btn1) ;
  68.   alignM.add(Btn2) ;
  69.   alignD.add(Btn3) ;
  70.  
  71.   win.Add(Boite);
  72.  
  73. -------------------------------------------  
  74.  
  75.   win.Set_Default_Size(500,500) ;  
  76.  
  77.   win.set_position(Win_Pos_Mouse) ;
  78.  
  79.   -- win.set_opacity(0.7) ;
  80.  
  81.    declare
  82.  
  83.    name : String := get_text(space) ;
  84.  
  85.         begin
  86.        
  87.         if name= "user"
  88.         then Ada.text_io.Put("Hello" );
  89.         end if;
  90.        
  91.    end ;
  92.  
  93.   win.Show_all ;
  94.   Main ;
  95.  
  96. END prototype ;


Message édité par eroge le 22-12-2015 à 00:39:26
Reply

Marsh Posté le 13-12-2015 à 18:30:47   

Reply

Marsh Posté le 18-12-2015 à 05:52:46    

Edit=Je sais que pour avoir une réaction , il y  les signaux .

 

Pour l'instant ,  je met de coté la réaction de la fenêtre et je me concentre sur la fonction Get_text .

 

J'ai modifié le code et utilisé la fonction comme ci-aprés =

 
Code :
  1. saisie := Get_text(The_Entry => saisie);
 

Donc , la variable "saisie" de type = Gtk_Entry , est bien utilisée dans la fonction .

 

Mais alors POURQUOI le compilo affiche =

 

prototype.adb:74:14: expected type "Gtk_Entry" defined at gtk-gentry.ads:59
prototype.adb:74:14: found type "Standard.String"
Compilation échouée.
gnatmake: "prototype.adb" compilation error

 

:??:   :ouch:

 


Voici le code entier aprés la modification =

 
Code :
  1. WITH Gtk.Main ;          USE Gtk.Main ;
  2. WITH Gtk.Window ;        USE Gtk.Window ;
  3. WITH Gtk.Enums ;         USE Gtk.Enums ;
  4. WITH Gtk.Button ;        USE Gtk.Button ;
  5. WITH Gtk.Alignment ;     USE Gtk.Alignment ;
  6. WITH Gtk.Box ;           USE Gtk.Box ;
  7. WITH Gtk.Gentry;         USE Gtk.Gentry;
  8.  
  9. PROCEDURE prototype IS
  10.  
  11. -------------------------------
  12.   -- VARIABLES --    |
  13. -----------------------------------------------------------
  14.   win : Gtk_window ;
  15.  
  16.   Btn1, Btn2 ,Btn3  : Gtk_Button ;
  17.  
  18.   alignG, alignM ,alignD  : Gtk_Alignment ;
  19.  
  20.   Boite  : Gtk_VBox ;
  21.  
  22.   Boutons :  Gtk_HBox ;
  23.    
  24.   saisie : Gtk_Entry ;
  25.    
  26. -----------------------------------------------------------
  27. BEGIN
  28.  
  29.   Init ;
  30.  
  31. --------------------
  32.   -- NEW --   |
  33. -------------------------------------------
  34.  
  35.   Gtk_New(win);  
  36.  
  37.   Gtk_New(saisie);
  38.                       
  39.   Gtk_New(Btn1, "Bouton 1" ) ;
  40.   Gtk_New(Btn2, "Bouton 2" ) ;
  41.   Gtk_New(Btn3, "Bouton 3" ) ;
  42.  
  43.   Gtk_New(alignG,0.0,1.0,1.0,1.0);
  44.   Gtk_New(alignM,0.5,1.0,1.0,1.0);
  45.   Gtk_New(alignD,1.0,1.0,1.0,1.0);
  46.  
  47.  Gtk_New_VBox
  48.  (Boite, homogeneous => false, Spacing => 0) ;
  49.  
  50.  Gtk_New_HBox
  51.  (Boutons, homogeneous => false, Spacing => 0) ;
  52.      
  53. --------------------------------------------
  54.  
  55.   Boite.Pack_Start(saisie);
  56.   Boite.Pack_Start(Boutons);
  57.   Boutons.Pack_Start(alignG);
  58.   Boutons.Pack_Start(alignM);
  59.   Boutons.Pack_Start(alignD);
  60.  
  61.  
  62. ---------------------------------
  63. --  Ajouts                    |
  64. --------------------------------------------
  65.  
  66.   alignG.add(Btn1) ;
  67.   alignM.add(Btn2) ;
  68.   alignD.add(Btn3) ;
  69.  
  70.   win.Add(Boite);
  71.  
  72. -------------------------------------------  
  73.  
  74.   saisie := Get_text(The_Entry => saisie);
  75.  
  76.   win.Set_Default_Size(500,500) ;  
  77.  
  78.   win.set_position(Win_Pos_Mouse) ;
  79.  
  80.   -- win.set_opacity(0.7) ;
  81.  
  82.   win.Show_all ;
  83.   Main ;
  84.  
  85. END prototype ;


Message édité par eroge le 18-12-2015 à 06:07:27
Reply

Marsh Posté le 18-12-2015 à 13:50:43    

saisie := Get_text(The_Entry => saisie);
Si tu supposes que les deux arguments du message d'erreur ont été inversés:
prototype.adb:74:14: expected type "Standard.String" defined at gtk-gentry.ads:59
prototype.adb:74:14: found type "Gtk_Entry"
Ça devient plus clair, car je suppose que Get_text devrait renvoyer une String et non pas une Entry, non?
Et en allant vérifier:

Citation :

  function Get_Text
       (The_Entry : not null access Gtk_Entry_Record) return UTF8_String;


(et en plus, il devrait pas y avoir une majuscule à text?)
Tu pourras faire un rapport de bug pour le compilo quand à cette inversion de paramètres.
 
A+,


Message édité par gilou le 18-12-2015 à 13:56:25

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-12-2015 à 00:37:16    

merci de ton aide @gilou ,

 

Finalement c'est pas la faute du compilo .

 

Correction à faire=

 

Déclaration de chaine vide , donc =

Code :
  1. chaine : String  := "" ;
 

Et utiliser la fonction avec =

Code :
  1. chaine := Get_text(saisie);


Message édité par eroge le 22-12-2015 à 00:38:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed