Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!212.27.60.64.MISMATCH!cleanfeed3-b.proxad.net!nnrp1-1.free.fr!not-for-mail Newsgroups: fr.comp.lang.ada References: <2d7ae0f0-603d-405b-ae05-df8ec6de9cecn@googlegroups.com> From: DrPi <314@drpi.fr> Subject: Re: Les Callback en Ada Date: Mon, 20 Sep 2021 19:07:02 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <2d7ae0f0-603d-405b-ae05-df8ec6de9cecn@googlegroups.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Lines: 90 Message-ID: <6148bfb6$0$8881$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 20 Sep 2021 19:07:02 CEST NNTP-Posting-Host: 82.65.30.55 X-Trace: 1632157622 news-1.free.fr 8881 82.65.30.55:60490 X-Complaints-To: abuse@proxad.net Bytes: 3543 Bonjour, Le 20/09/2021 à 02:51, Danielle Mandi Mayagha a écrit : .... > Salut désolé encore si je dérange mais j'ai un second souci que j'arrive pas à résoudre( voila je donne un exemple du code apres j'explique le probleme) > > ficfier.ads > > with Gtk.File_chooser_dialog; use gtk.file_file_chooser_dialog; > with gtk.widget; use gtk.widget; > with gtk.handlers; > > package P_fichier is > > type T_Type is record > > F : Gtk_file_chooser_dialog; > > end record; > > package Callback is new gtk.handlers.user_callback (gtk_widget_record, P_fichier.T_Type); > > use Callback; > > Procedure Stop_Program ( emetteur : access gtk_widget_record; > object : out P_fichier.T_Type ); > > end P_fichier; > > fichier.adb > > package body P_fichier is > > Procedure Stop_Program is (emetteur : access gtk_widget_record; > object : out P_fichier.T_type ) is > pragma Unreferenced (emetteur); > > begin > > gtk_new (Object.F, "ajout du fichier", action_Save, null); > > end Stop_Program; > end P_fichier; > > main_program.adb > > with gtk.main; use gtk.main; > with gtk.window; use gtk.window; > with gtk.button; use gtk.button; > with P_fichier; use P_fichier; > > Procedure main_Program is > > win : gtk_window; > bouton : gtk_button; > > begin > init; > > gtk_new (win); > win.set_default_size (600,400); > > gtk_new (bouton,"ouvrir le fichier"); > > declare > > Object : T_Type; > > begin > > P_fichier.callback.connect (bouton,s signal_clicked, callback.to_marshaller (stop_program' > access, Object, false ); > > end ; > > win.Add (bouton); > win.show_all; > main; > end main_program; > > voila le probleme est que le programme affiche le meme message d'erreur que precedent pourtant j'ai bien mis Stop_Program dans un fichier separe. mais je ne comprend pas j'ai essayé avec Object_connect mais c'est toujours pareil. > A première lecture du programme, le problème n'est plus avec stop_program mais avec Object. Object n'existe qu'entre declare et le end correspondant. Il n'est donc pas possible de l'utiliser dans une callback. Nicolas