dynamically tagged expression not allowed

Thomas De Contes <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Bonjour :-)


je viens de passer de mac os x 10.4 à 10.6, donc d'un vieux compilateur à un compilateur "tout neuf"
alors je m'attendais à avoir quelques adaptations à faire, mais là je tombe sur un os :-(

j'ai horreur des variables globales, que j'essaye d'éviter au maximum,
et j'avais trouvé un truc pour les éviter dans certaines situations, qui ne marche plus avec le nouveau compilateur, alors j'espère que je vais pas être obligé d'y revenir …

(en fait les variables globales ne sont pas en jeu, c'est "juste" un problème de lisibilité. je m'en suis rendu compte après avoir écrit la suite)



	type modeleFenetre is new Gtk_Window_Record with private;
	type contenuFenetre is new modeleFenetre with record
		...
	end record;
	type fenetre is access all contenuFenetre'Class;

-- le type fenetre contient la fenêtre qui va être créée avec une variable de ce type là


-- quand on va cliquer sur un bouton, ça va exécuter la procédure suivante :

	procedure Item_preferences_Activate
		(Object : access Gtk_Image_Menu_Item_Record'Class)
	is

-- pour ne pas devoir mettre cette fenêtre en variable globale, je la récupère à partir de l'objet cliqué (Object) avec les fonctions suivantes :
		w :Gtk_Widget renames Get_Toplevel(Get_Attach_Widget(Gtk_Menu(Get_Parent(Object))));
		fp :contenuFenetre renames fenetre(w).all;
	begin
		...
	end Item_preferences_Activate;


-- avec l'ancien compilateur, c'était déjà interdit de faire un renames directement avec le type fenetre
		fp :fenetre renames fenetre(Get_Toplevel(Get_Attach_Widget(Gtk_Menu(Get_Parent(Object)))));
-- (ca dit "renaming of conversion only allowed for tagged types")

-- c'est pour ça que j'ai besoin de w pour les cas où il faut fournir un pointeur, et de fp pour les cas où j'ai besoin d'accéder aux données à l'intérieur du record

-- mais là, à la ligne 
		fp :contenuFenetre renames fenetre(w).all;
-- je me mange un "dynamically tagged expression not allowed" :-(


bon, en fait si je ne trouves pas de solution je dois juste re-parcourir tout mon code source et remplacer les fp par fenetre(w), ce qui est quand même moins lisible (mais pas insurmontable)

est ce que quelqu'un a une solution pour rester lisible ? :-)


-- 
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/

_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.