Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 02-12-2008 10:17:01

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

[RESOLU] Fermeture executable ...

Bonjour à tous,

J'ai des soucis pour fermer mon application que j'ai du créer de toute pièces (d'habitude je dois juste faire joujou avec des applications déjà existantes ).

C'est une application vraiment très basique : un objet application, une fonction et une fenêtre.


Le open de mon application initialise certaines variables globales nécessaires à l'authentification de l'utilisateur puis fait appel à la fenêtre :

Code: pb

[...]
////////////////////////////////////////////////
// Ouverture de la frame de l'application
////////////////////////////////////////////////

Open (w_init_masse)            // YOUR MDI frame window goes here!


Dans ma fenêtre (de type main) j'appelle tout de suite un événement après le open qui réalise le traitement attendu (avec log affiché sur la fenêtre pendant le traitement).


Une fois fini on peut fermer la fenêtre en cliquant sur le bouton fermer ...

Code: pb

Close(Parent)

... ou en cliquant sur la croix de la fenêtre


Mais le problème c'est que je n'accède jamais à l'événement close de mon application :

Code: pb

////////////////////////////////////////////////
// Destroy the global non-visual user objects.
////////////////////////////////////////////////

f_destroy_global_variables()

///////////////////////////////////
// Rollback any pending updates.
///////////////////////////////////
ROLLBACK &
   USING SQLCA;

/////////////////////////////////////////
// Disconnect the current transaction.
/////////////////////////////////////////
DISCONNECT &
   USING SQLCA;


Quelle étape ai je donc loupé dans ma démarche?

Y a t-il une possibilité d'appeler l'événement close de l'application depuis l'événement close de la fenêtre?

Merci d'avance pour vos réponses

Dernière modification par Nephtis (04-12-2008 09:49:14)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#2 02-12-2008 10:21:04

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Fermeture executable ...

tu as debuggué ?

tu as mis des messagebox un peu partout , pour voir ou ca passe ?
il n'y a pas un halt close, un truc de ce genre ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 02-12-2008 10:38:35

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

C'est quand j'ai débuggué que je me suis justement aperçu que je ne rentrait pas dans le close de mon application

Je lance "Step Over" pour ce point d'arrêt et puis plus rien : la fenêtre à bien disparue mais le debuggueur tourne toujours et tout est grisé (pas de "Resume" ou de "Step XXXX")
Cliquez pour agrandir


Les "Halt Close" se trouvent dans le open de mon application et dans la fonction (qui elle même est appelée dans le open)

Dernière modification par Nephtis (02-12-2008 10:41:04)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#4 02-12-2008 10:54:36

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Fermeture executable ...

Tu as du code dans le closequery de ta fenêtre ?


never let people work on more than one thing at once.

Hors ligne

 

#5 02-12-2008 10:55:54

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

As tu essayé de mettre un point d'arrêt dans ta fonction f_destroy_global_variables() ?

Hors ligne

 

#6 02-12-2008 14:00:36

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

shahin a écrit:

Tu as du code dans le closequery de ta fenêtre ?

Ma fenêtre ne possède que les événements 'open' et 'ue_init' (voir capture d'écran ci dessus)


nico a écrit:

As tu essayé de mettre un point d'arrêt dans ta fonction f_destroy_global_variables() ?

J'ai mit un point d'arrêt dedans et tout s'est bien déroulé

Code de la fonction :

Code: pb

string l_s_app_name

l_s_app_name = GetApplication().appname

/////////////////////////////////////////////////
// Initialisation des variables globales
/////////////////////////////////////////////////

// Create the environment services object.  This should
// be done before either components or msg_manager.
g_nv_env = CREATE nv_environment

// Create INI manager
g_nv_ini = CREATE nv_ini

// Create the message manager.
g_nv_msg_mgr = CREATE nv_msg_manager

// Create fonction de manipulation de données
g_nv_fct_data = CREATE nv_fct_data

/////////////////////////////////////////////
// Vérification d'unicité de l'application
/////////////////////////////////////////////
if a_b_test_unicite then
  if not g_nv_env.fnv_test_unicite_appl(GetApplication()) then
    MessageBox (l_s_app_name, "L'application est déjà lancée", StopSign!)
    halt close
  end if
end if

/////////////////////////////////////////////////////////////////
// Initilisation de l'objet de gestion du .INI de l'application
/////////////////////////////////////////////////////////////////

// Open the application .INI file.
IF NOT g_nv_ini.fnv_check_and_open (l_s_app_name) THEN
  MessageBox (l_s_app_name, "Impossible d'ouvrir le fichier .INI de l'application", StopSign!)
  HALT CLOSE
END IF

Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#7 02-12-2008 14:08:11

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

Nephtis a écrit:

J'ai mit un point d'arrêt dedans et tout s'est bien déroulé

Donc tu es bien passé dans l'événement close de ton application?
Et quand tu debug ta fonction pas à pas ou est ce que ça bloque?

Hors ligne

 

#8 02-12-2008 14:27:27

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

La fonction se trouve dans l'événement open de l'application, je ne passe jamais dans l'événement close de l'application (malheuresement ).

Je passe dans le open de l'application --> ouverture de la fenêtre --> open de la fenêtre qui appelle ue_init_masse --> (clic sur le bouton fermer) événement close de la fenêtre --> plus rien

Dernière modification par Nephtis (02-12-2008 14:28:30)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#9 02-12-2008 15:08:59

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

Oups, j'avais cru comprendre que tu rentrais dedans lorsque tu à écrit

Nephtis a écrit:

J'ai mit un point d'arrêt dedans et tout s'est bien déroulé

Par contre, il s'agit bien du code de l'event close de ton appli?

Code: pb

////////////////////////////////////////////////
// Destroy the global non-visual user objects.
////////////////////////////////////////////////

f_destroy_global_variables()

///////////////////////////////////
// Rollback any pending updates.
///////////////////////////////////
ROLLBACK &
   USING SQLCA;

/////////////////////////////////////////
// Disconnect the current transaction.
/////////////////////////////////////////
DISCONNECT &
   USING SQLCA;


Tu as bien mis un point d'arrêt sur ta fonction f_destroy_global_variables(), et lorsque tu clic sur cb_fermer, le debugger ne se déclenche pas?

Hors ligne

 

#10 02-12-2008 15:41:47

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

nico a écrit:

Par contre, il s'agit bien du code de l'event close de ton appli?

Affirmatif : Ctrl+A, Ctrl+C puis Ctrl+V

nico a écrit:

Tu as bien mis un point d'arrêt sur ta fonction f_destroy_global_variables(), et lorsque tu clic sur cb_fermer, le debugger ne se déclenche pas?

C'est bien la mon problème, je n'accède jamais à cette partie du script (le debugger ne se déclenche pas)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#11 02-12-2008 16:05:16

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

Je suis un peu désorienté

ta fenêtre a t'elle héritée d'une autre fenêtre?

Sinon, comme l'a dit Pick, je placerai des messagebox() un peu partout
dans l'évent clicked du cb_fermer, dans l'évent close de ta window, dans le close de ton appli, et dans ta fonction f_destroy_global_variables().

Hors ligne

 

#12 02-12-2008 16:12:39

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Fermeture executable ...

un peu HS, mais ta fonction f_destroy_global_variables() est-elle vraiment utile ?
Le garbage collector est là pour ça...


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#13 03-12-2008 09:56:01

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

erasorz a écrit:

un peu HS, mais ta fonction f_destroy_global_variables() est-elle vraiment utile ?
Le garbage collector est là pour ça...

Le code pour l'ouverture et la fermeture de l'application à été repris d'une application existante, je pars donc sur le fait que même si cela peut être inutile, ça marche habituellement sur l'autre application.


J'm'en vas lancer un bombardement de messagebox


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#14 03-12-2008 10:14:59

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

Bombardement terminé

La vidéo du tournage ici : http://dl.free.fr/oBNXSdnsz


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#15 03-12-2008 12:53:51

thefab  
Membre Geek
Lieu: Sion
Date d'inscription: 25-09-2008
Messages: 43
Pépites: 4
Banque: 0

Re: [RESOLU] Fermeture executable ...

Nephtis a écrit:

Y a t-il une possibilité d'appeler l'événement close de l'application depuis l'événement close de la fenêtre?

Code: pb

Application app

app = GetApplication()

app.Event close()

Hors ligne

 

#16 03-12-2008 12:58:35

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Fermeture executable ...

et si tu pouvais mettre de jolies femmes en fond d'ecran, on y verrait plus claire...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#17 03-12-2008 13:34:35

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

c'est vrai que des messagebox(), c'est pas très sexy
Et j'avoue que c'est ma première scéance vidéo .............. De debug

Hors ligne

 

#18 03-12-2008 13:38:43

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

On voit une partie de Misato (Evangelion) sur le coté droit de la vidéo (c'est une jolie femme tout de même)

thefab a écrit:

Code: pb

Application app

app = GetApplication()

app.Event close()

Ça appelle bien l'événement close mais ça ne force pas l'application à se terminer

Dernière modification par Nephtis (03-12-2008 13:42:12)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#19 03-12-2008 14:04:49

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Fermeture executable ...

Nephtis a écrit:

Ça appelle bien l'événement close mais ça ne force pas l'application à se terminer

En effet, mais de toute façon, ton appli devrait marcher telle quelle... Pourrait-on voir l'export des objets application et ta window?

Hors ligne

 

#20 03-12-2008 14:12:47

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Fermeture executable ...

Bonjour,

A mon point de vue, si tu ne passes pas dans l'événement close de l'application c'est que ta fenêtre n'est jamais réellement fermée.

Ta fenêtre se ferme visuellement mais il reste surement un processus en cours de traitement dans le code de la fenêtre qui empêche la fermeture totale (retrait total du processus de la mémoire).

Par exemple, tu n'as pas une requête qui reste en attente de libération d'un lock ou autres ? je dis ça parce que je vois un ROLLBACK dans la fermeture global de ton application.

Vu que ton application ne paraît pas complexe, je la recommencerai en la reconstruisant graduellement jusqu'à voir quelle process empêche le passage dans l'événement close de l'application.

Hors ligne

 

#21 04-12-2008 09:37:32

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fermeture executable ...

buck a écrit:

Bonjour,

A mon point de vue, si tu ne passes pas dans l'événement close de l'application c'est que ta fenêtre n'est jamais réellement fermée.

Ta fenêtre se ferme visuellement mais il reste surement un processus en cours de traitement dans le code de la fenêtre qui empêche la fermeture totale (retrait total du processus de la mémoire).

Par exemple, tu n'as pas une requête qui reste en attente de libération d'un lock ou autres ? je dis ça parce que je vois un ROLLBACK dans la fermeture global de ton application.

Vu que ton application ne paraît pas complexe, je la recommencerai en la reconstruisant graduellement jusqu'à voir quelle process empêche le passage dans l'événement close de l'application.

Je lis le contenu d'un fichier, peut être que je passe dans une condition ou j'oublie de fermer le fichier.

Je regarde ça de suite.


J'ai testé de supprimer tout ce qui est identification et habilitation dans le open de mon application et là ça marche tout seul.

Bon va falloir que j'analyse comment ça marche...

Resolu, merci buck (et puis tous les autres aussi )

Dernière modification par Nephtis (04-12-2008 09:48:50)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22