FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
libérer toutes les variables d'un programme sans le fermer Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
libérer toutes les variables d'un programme sans le fermer Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
libérer toutes les variables d'un programme sans le fermer Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
libérer toutes les variables d'un programme sans le fermer Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
libérer toutes les variables d'un programme sans le fermer Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
libérer toutes les variables d'un programme sans le fermer Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
libérer toutes les variables d'un programme sans le fermer Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
libérer toutes les variables d'un programme sans le fermer Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
libérer toutes les variables d'un programme sans le fermer Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
libérer toutes les variables d'un programme sans le fermer Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
libérer toutes les variables d'un programme sans le fermer Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
libérer toutes les variables d'un programme sans le fermer Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
libérer toutes les variables d'un programme sans le fermer Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
libérer toutes les variables d'un programme sans le fermer Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
libérer toutes les variables d'un programme sans le fermer Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -25%
PC Portable Gamer 16,1” HP Victus 16 – 16 ...
Voir le deal
749.99 €

 

 libérer toutes les variables d'un programme sans le fermer

Aller en bas 
4 participants
AuteurMessage
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptySam 19 Mai 2012 - 20:52

Bonjour,

TERMINATE libère toutes les variables d'un programme et ferme ce dernier.
Existe-t-il une fonction qui libérerait toutes les variables du programme mais sans fermer celui-ci ?
Si non, comment pourrait-on faire ça sans passer par un régiment de FREE ?

Je vous remercie.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptySam 19 Mai 2012 - 21:21

Peux-tu m'expliquer pourquoi tu souhaites libérer toutes les variables, mais pas les objets, pas les fichiers, pas les évènements ? Ou veux-tu seulement redémarrer le programme comme s'il venait d'être lancé ? Car dans ce cas, il y a des solutions très simples...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptySam 19 Mai 2012 - 21:24

En effet, la question laisse perplexe ! scratch
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 9:02

Bonjour à tous deux et merci de votre attention.

Voici mon problème et le pourquoi de ma question : Mon programme ouvre une base de données (enregistrée dans un fichier texte) par le menu. L'utilisateur voudra, pour une raison ou une autre, changer de base de données à travailler (= ouvrir un nouveau fichier texte). Lorsque je tente cette manipulation, j'obtiens l'erreur "Variable déjà déclarée" et le programme plante.
Je souhaiterais donc remettre tout à zéro, sans quitter le programme, chaque fois que l'utilisateur cliquera sur le menu "Ouvrir une nouvelle base".

Qu'en pensez-vous ?
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 9:17

Tu as certainement des commandes DIM dans le traitement du clic sur le menu, ce qui marche bien lors de la première fois, mais pose problème lors de la seconde.

Trois solutions:

1. La méthode "brute force": tu scindes ton programme en deux: la partie "sélection" dans un programme, et la partie "traitement' dans un autre. Dès qu'une sélection est faite, tu fais
Code:
execute "partie2.exe "+NomDeLaBase$
terminate
et dans partie2, tu fais tout ce qui'il faut. A la fin, tu fais
Code:
execute "partie1.exe "
terminate
et tu reviens sur ton module de sélection. Plus de problème de gestion de variables.

2. la méthode "douce": demant chaque dim d'une variable, tu insères
Code:
if variable("NomDeLaVariable")=1 then delete NomDeLaVariable
et comme par magie, cela marchera.

3. la méthode "Panoramic": tu déplaces tes déclarations en début du programme, de sorte qu'elles soient exécutées avant la commande END. Ainsi, tu n'as plus de double définition. Et tu fais un sous-programme raz que tu appelles en cas de clic sur un menu:
Code:
label raz
...
' en cas de clic sur le menu:
gosub raz
...
raz:
variable1=...
variable2=...
...
clear objet1...
clear objet2...
...
caption objeti,""
caption objetj,""
...
text objetx,""
text objety,""
...
return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 9:50

Merci pour la réponse rapide.

La méthode 3 ne peut pas convenir à l'une de mes variables, et c'est d'ailleurs celle qui ne m'aime pas. Il s'agit en effet d'une variable construite par le programme, s'agissant d'un tableau de variables, dont l'indice est calculé en fonction du nombre de lignes du fichier qui est ouvert par l'utilisateur.

Lorsque je tente la méthode 2, elle échoue à cette même variable (Name already defined).
J'ai essayé :
Code:

if variable("actes$(ligne_fichier%)")=1 then delete actes$(ligne_fichier%)
...
dim actes$(ligne_fichier%)

Quant à la méthode 1, elle me fait un peu peur... Mais peut-être qu'il ne me restera plus que cette solution...
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 10:02

Alors, autant dans la solution 2 que dans la solution 3, il faut utiliser la commande FREE pour libérer la variable. Je suis désolé pour l'erreur que j'ai faite en décrivant la méthode 2: la commande DELETE s'adresse à un objet, non à une variable. Pour cela, il faut FREE comme dans l'exemple suivant:
Code:

' première déclaration
dim actes$(20)
actes$(20)="ddd"
' suppression de la variable
free actes$
' seconde déclaration
dim actes$(30)
actes$(30)=yyy
end
Et je pense que tu as la solution à ton problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 11:04

Free est la solution. Ca marche à merveille. Je te remercie encore et encore pour ta disponibilité et... ton savoir !
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 13:35

Ce sujet me conduit à exposer une réflexion que je me fait souvent à propos de EXECUTE.

Dans le langage QB il y a la possibilité d'utiliser (dans le code) RUN sans aucune autre précision. Dans ce cas le programme se relance à la première ligne et remet toutes les variables à zéro.
Je me pose la question de savoir s'il ne serait pas possible d'avoir en Panoramic la commande EXECUTE sans rien préciser et ainsi le programme redémmarerait en faisant un DELETE sur toute les variables, label et sur tous les objets.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 13:52

C'est un peu brutal, mais tu peux l'obtenir actuellement pour peu que tu connaisses le chemin vers l'exécutable qui est actuellement en cours. Et je parle d'exécutable parce que la commande EXECUTE ne permet de lancer qu'in fichier EXE. Tu fais ceci:
Code:
EXECUTE ce_programme$
terminate
où la variable ce_programme contient le chemin (en nom court) vers le programme actuel.
Evidemment, ce serait plus simple d'avoir EXECUTE sans paramètres, ou plutôt une commande RESTART pour éviter les problèmes de syntaxe sur la commande EXECUTE. On éviterait la difficulté d'obtenir le nom court de l'exécutable en cours.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 17:41

@Klaus,

J''ai déjà fait l'essai EXECUTE "CE_programme.exe" dans le code de ce même exécutable (comme tu l'indiques) et j'ai constaté que le programme ne repars pas au début, il reprend là ou il s'est arrêté (comme si on avait écrit EXECUTE_WAIT "CE_programme.exe").
J'ai aussi vérifié ce qui se passe au niveau des variables, elles conservent leur dernière valeur connu du programme.
Donc j'ai abandonné cette idée de commander la relance du programme avec EXECUTE.

Par contre ton idée de RESTART serait une solution.
On pourrait aussi imaginer une commande CLEAR_ALL_VARIABLE sans arrêter le programme. (c'est le souci d'Ambroise)

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyDim 20 Mai 2012 - 21:50

Citation :
J''ai déjà fait l'essai EXECUTE "CE_programme.exe" dans le code de ce même exécutable (comme tu l'indiques) et j'ai constaté que le programme ne repars pas au début, il reprend là ou il s'est arrêté
?????????????????
Impossible. As-tu fait TERMINATE juste après EXECUTE ? Et surtout pas EXECUTE_WAIT ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyLun 21 Mai 2012 - 7:49

Non je n'ai pas utilisé TERMINATE (vu que c'était un essai pour voir ce qui se produisait en relançant le programme par lui-même). Je n'ai pas non plus utilisé EXECUTE_WAIT.
Avec TERMINATE le programme repars et trouve en premier TERMINATE à exécuter (je vois pas l'intérêt).
Bref, l'essai est pour moi est concluant, il ne sert à rien d’utiliser EXECUTE pour qu'un exécutable se relance lui-même, vu qu'il repars juste après EXECUTE et que les variables sont toujours incrémentées.

Je voulais juste voir si cela aurait pu être comme RUN en QB et maintenant je sais que ce n'est pas le cas.

A+
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyLun 21 Mai 2012 - 19:32

Désolé de te contrdire, mais EXECUTE du même programme suivi d'un TERMINATE relance bien le programme au début, avec son état initial, et toutes les variables sont oubliées. Regarde ceci:
Code:
dim i%, prog$
prog$ = "C:\DOCUME~1\Klaus\MESDOC~1\MESPRO~2\test\TEST_E~2.EXE"
i% = i% + 1
message "i%="+str$(i%)
i% = i% + 1
execute prog$
terminate
end
J'ai appelé mon source test_EXECUTE.bas. Il faut générer l'exécutable sous le même nom, dans le répertoire qui te convient, puis adapter le contenu de la variable prog$ pour avoir le nom court vers cet exécutable. Surtout, ne le lance pas par l'éditeur. Double-clique sur cet exécutable. Tu verras une fenêtre "i%=1" qui s'affiche. Lorsque tu fermes cette fenêtre, après un bref délai, la MEME fenêtre s'ouvre avec toujours "i%=1" et ainsi de suite à l'infini.

Si tu regardes le source, si les variables étaient préservées, i% devrait s'incrémenter, au moins de 1, sinon de 2. Or, ce n'est pas le cas.

Attention: il faut tuer le programme par le gestionnaire des tâches !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer EmptyLun 21 Mai 2012 - 21:02

Oui Klaus on est d'accord:
Citation :
Avec TERMINATE le programme repars (à cause de EXECUTE prog$) et trouve en premier TERMINATE à exécuter....

En tout état de cause, il n'y aucun intérêt de demander au programme de se relancer lui même en Panoramic, car en fait il n'y a pas de commande spécifique pour cela.

Merci de ta réponse et à plus.

Edit:
Citation :
vu qu'il repars juste après EXECUTE et que les variables sont toujours incrémentées.
là je pensaiis sans terminate
Revenir en haut Aller en bas
Contenu sponsorisé





libérer toutes les variables d'un programme sans le fermer Empty
MessageSujet: Re: libérer toutes les variables d'un programme sans le fermer   libérer toutes les variables d'un programme sans le fermer Empty

Revenir en haut Aller en bas
 
libérer toutes les variables d'un programme sans le fermer
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» fermer le programme qui lance un autre programme
» fermer un programme exterireur
» Fermer un programme externe à PANORAMIC
» fermer une fenetre
» Un petit programme de dessin sans prétention

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: