Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1406 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2271474
eroge
Posté le 13-12-2015 à 18:30:47  profilanswer
 

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
mood
Publicité
Posté le 13-12-2015 à 18:30:47  profilanswer
 

n°2271850
eroge
Posté le 18-12-2015 à 05:52:46  profilanswer
 

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
n°2271882
gilou
Modérateur
Modzilla
Posté le 18-12-2015 à 13:50:43  profilanswer
 

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é!  --
n°2272120
eroge
Posté le 22-12-2015 à 00:37:16  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

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

 

Sujets relatifs
Utiliser getClass() dans une fonctionUtiliser une variable dans une fonction range.value
Problème pour utiliser la fonction splitquelle fonction utiliser?
Utiliser une fonction du shell dans un programme CUtiliser un variable, lancer une fonction d'un autre movieclip?
utiliser la fonction number_format() pour ajouter une virguleUtiliser une fonction sur un pointeur
Fonction à utiliser dans une chaîne de caractère dans Access 
Plus de sujets relatifs à : [Résolu][GTK]Utiliser la fonction Get_text


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR