Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Probleme avec EXECUTE | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Probleme avec EXECUTE Mer 27 Mai 2009 - 21:26 | |
| Bonsoir, J'essai de transmettre une donnée d'un source vers un autre par la commande EXECUTE, mais ça ne marche pas comme je le voudrais. La transmission se fait, mais c'est a$ qui est transmis en tant que string "a$" et nom pas sa valeur déclarée dans le le prog de lancement. D'autre part j'ai du mal à piger la syntaxe qui est donnée dans le manuel de référence. Faut-il des " " oui ou non? Voici les 2 sources pour que tu essais - Code:
-
label clik1,clik2
dim a$,a1$,a2$
a$="mon nom est: JEAN" a1$="CLIQUEZ ICI" a2$="VERS PROG 1"
button 1 caption 1, a1$ on_click 1,clik1 top 1,50 left 1,50
button 2 on_click 2,clik2 top 2,350 left 2,400
end
Rem -------- --------- clik1: caption 1,"A bientot" caption 2, a2$ print_locate 100,100 print a$ return clik2: execute "prog1panoramic.exe a$" terminate return
- Code:
-
label clik1,clik2
dim a1$,a2$ dim a$
a$=param_value$(1)
rem ---------- ------------ a1$="CLIQUEZ ICI" a2$="QUITTER"
button 1 caption 1, a1$ on_click 1,clik1 top 1,50 left 1,50
button 2 on_click 2,clik2 top 2,350 left 2,400
end
Rem -------- --------- clik1: caption 1,"A bientot" caption 2, a2$ print_locate 100,100 print a$ return clik2: terminate return
Une derniere question: Dans le menu fichier de l'IDE, il y a 2 options ".exe". L'executable (la je sais à quoi ça sert) et l'application (et la je me pose la question). Quelle différence entre les 2. Jette un oeil quant tu auras 5 mn Merci A+ | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Probleme avec EXECUTE Sam 30 Mai 2009 - 12:43 | |
| En effet, la commande: - Code:
-
execute "prog1panoramic.exe a$" lance l'excécutable prog1panoramic.exe en lui passant les 2 caractères a et $, et non pas le contenu de la variable string a$. Je n'avais jamais envisagé de pouvoir passer le contenu d'une variable en paramètre à un exécutable. D'autre part, il est possible de créer un exécutable ou une application. On crée un exécutable quand on n'a pas beaucoup de fichiers externes à charger (FILE_LOAD, ...) Mais si on fait un logiciel pour quelqu'un et qu'on veut liver un seul fichier, on crée une application. Une application contiendra en plus de l'exécutable tous les fichiers texte et toutes les images bmp du repertoire courant. | |
| | | Georges
Nombre de messages : 290 Age : 55 Localisation : Martinique Date d'inscription : 29/05/2009
| Sujet: Re: Mar 21 Juil 2009 - 16:06 | |
| Salut Jean-Claude Je te propose une astuce pour passer des données d'un source à l'autre. Ma méthode est de créer un fichier temporaire dans lequel tu pourras inserer toutes les données que tu souhaites. En exemple je propose le code suivant: Il se répartit bien entendu de deux fichiers, le premier nommé TEST1.bas et le deuxième nommé TEST2.bas voici le code de TEST1.bas - Code:
-
dim a input "Entrez votre donnée :";a file_open_write 1,"c:\data.tmp" file_write 1,a file_close 1 wait 2000 execute "test2.exe"
voice le code de TEST2.bas - Code:
-
dim a file_open_read 1,"c:\data.tmp" file_readln 1,a file_close 1 cls print "La donnée dans le fichier temporaire est :" print a file_delete "c:\data.tmp"
Le deuxième source devra obligatoirement être un exécutable pour que cela fonctionne - Panoramic oblige Ce code gère les données de type entier ou réel - mais il peut servir pour toute autre donnée. Georges | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Probleme avec EXECUTE Mar 21 Juil 2009 - 20:41 | |
| Salut Georges
Oui, je procède déja de cette maniere. Merci du tuyau quand même.
En fait QB n'offrait pas (à ma conaissance) cette possibililité de transmettre par un RUN des données. Je pensais simplement que ce serait plus utile de transmettre une ou plusieurs variables plutot que des strings par la commande EXECUTE (qui est en fait le RUN de QB).
Je te remercis de faire tes propositions, elles sont toujours les bienvenues.
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Probleme avec EXECUTE Mar 21 Juil 2009 - 21:59 | |
| Bonjour Jean Claude, tu vas bien ? Tu peux aussi envisager de passer des paramètres d'un programme à l'autre par l'intermédiaire du presse-papier de Windows, avec: - Code:
-
CLIPBOARD_COPY CLIPBOARD_PASTE CLIPBOARD_CUT ce qui est bien pratique et évite de créer des fichiers temporaires qui risquent de traîner après. A condition qu'un autre programme ne s'intercale pour écrire lui aussi dans le presse-papier, mais le risque est minime, je dirais même nul. EDIT: Allons Jean Claude (et Panoramic !), il me semblait bien quand même que ça marchait l' EXECUTE avec paramètre chaîne. Il faut écrire: - Code:
-
EXECUTE "prog1panoramic.exe " + a$ Le libellé a$ ne doit pas être compris entre les quotes, ce qui est logique, sinon il est traité comme le paramètre lui-même, et non son contenu. (ne pas oublier l'espace entre les deux, après le nom du programme appelé). Il faut évidemment mettre le chemin du programme appelé entre quotes, puisque c'est une chaîne et non une variable, argument de la commande EXECUTE. Mais tu peux parfaitement écrire: - Code:
-
prog$ = "prog1panoramic.exe" EXECUTE prog$ + " " + a$ dans ce cas, prog$ est une variable. Les 'quotes' (guillemets), c'est ce qui fait la différence entre une variable et son contenu. Une remarque pour Panoramic (pardon si je suis un peu long): Concernant l'Editeur. Quand on est en train de tester un petit programme et qu'on fait fréquemment des modifs et des exécutions, on fait fréquemment 'Fichier', 'Enregistrer', mais il s'affiche à chaque fois la liste des sources et il faut préciser le nom (toujours le même), cliquer 'Enregistrer', et là on a "Le fichier existe, le remplacer ? Yes No". Ne pourrait-il y avoir les deux options Enregistrer et Enregistrer sous..., Enregistrer se contentant de réécrire sous le nom d'origine, s'il existe (sinon, il demande) ? PS je tempère un peu mon propos: on n'est pas obligé de réécrire le source à chaque fois après modif pour faire un essai d'exécution. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Probleme avec EXECUTE Sam 25 Juil 2009 - 8:09 | |
| Salut JL35 et les autres J'ai essayé ton truc et çà marche (avec un MAIS) revoici les 2 codes - Code:
-
label clik1,clik2
dim a$,a1$,a2$,fi$
a$="mon nom est: JEAN" a1$="CLIQUEZ ICI" a2$="VERS PROG 1"
button 1 caption 1, a1$ on_click 1,clik1 top 1,50 left 1,50
button 2 on_click 2,clik2 top 2,350 left 2,400
end
Rem -------- --------- clik1: caption 1,"A bientot" caption 2, a2$ print_locate 100,100 print a$ return
clik2: fi$="prog1panoramic.exe" execute fi$+" "+a$ terminate
- Code:
-
label clik1,clik2
dim a1$,a2$ dim a$
a$=param_value$(4)
rem ---------- ------------ a1$="CLIQUEZ ICI" a2$="QUITTER"
button 1 caption 1, a1$ on_click 1,clik1 top 1,50 left 1,50
button 2 on_click 2,clik2 top 2,350 left 2,400
end
Rem -------- --------- clik1: caption 1,"A bientot" caption 2, a2$ print_locate 100,100 print a$ return
clik2: terminate return
Transformer ce dernier en exe. Voici le MAIS: Observe ce qui se passe quand tu changes la valeur de a$=PARAM_VALUE$ (4). La variable a$ n'est pas prise en compte dans son intégralité (a$="mon nom est: JEAN") Si tu mets (1) tu n'auras pas de print car le premier PARAM_VALUE(1) est fi$ Qu'en pense-tu ? A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Probleme avec EXECUTE Sam 25 Juil 2009 - 11:07 | |
| Alors là je ne comprends pas ce qui t'arrive, chez moi ton code marche très bien (j'ai juste changé le nom de l'exécutable en test.exe...) et je récupère bien PARAM_VALUE$(1) = "mon". Si j'affiche les 4 paramètres 1 à 4 j'ai bien: mon nom est: JEAN Je crois voir ce qui te chiffonne. En fait, en passant a$ en paramètre, tu ne passes pas un seul mais quatre paramètres, séparés par des espaces, le système ne peut pas savoir que l'ensemble a$ est une seule entité. C'est la définition des paramètres, chacun séparé de l'autre par un espace. si tu écris: - Code:
-
a$ = "un deux trois quatre" b$ = "cinq six sept" EXECUTE prog$ + " " + a$ + " " + b$ A l'arrivée prog$ recevra la chaîne "un deux trois quatre cinq six sept", soit 7 paramètres séparés: PARAM_VALUE$(1 à 7), il ne peut pas savoir qui est a$ et qui est b$. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Probleme avec EXECUTE Sam 25 Juil 2009 - 18:56 | |
| Ce qui me chiffonne, c'est çà: - Code:
-
label clik1,clik2
dim a1$,a2$ dim a$
a$=param_value$(2) a$=param_value$(3) a$=param_value$(4) a$=param_value$(5)
rem ---------- ------------ a1$="CLIQUEZ ICI" a2$="QUITTER"
button 1 caption 1, a1$ on_click 1,clik1 top 1,50 left 1,50
button 2 on_click 2,clik2 top 2,350 left 2,400
end
Rem -------- --------- clik1: caption 1,"A bientot" caption 2, a2$ print_locate 100,100 print a$ return
clik2: terminate
La variable a$ est au dépard un seul string "Mon nom est: JEAN" Comme tu peus le voir il faut que je répète 4 fois PARAM_VALUE$ de 2 à 5 (soit 4) pour récupérer ma variable initiale. Maintenant que je sais qu'un espace est automatiquement considéré comme un séparateur, tout va bien. Car si te souviens bien, en QB la variable a$="Mon nom est: JEAN" est considérée comme un seul et unique élément. Par contre j'y vois un intérêt avec PARAM_VALUE$, c'est qu'on peut passer plusieurs éléments avec une seule variable. Mais on ne peut pas écrire: PARAM_VALUE$(2,5) ou PARAM_VALUE$ (2 to 5) La machine le refuse. Il faut obligatoirement écrire 4 lignes de code. Ce qui n'est en fait qu'un petit inconvénient. PANORAMIC sera content que cette commande au bout du compte passe la valeur d'une variable, il faut juste à mon avis donner un exemple plus explicite dans le manuel de référence. Je te remerci JL35 car grace à toi je maitrise bien, maintenant, cette commande. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Probleme avec EXECUTE Sam 25 Juil 2009 - 19:05 | |
| J'ajoute que du coup on peut faire çà: - Code:
-
a$=param_value$(2) b$=param_value$(3) c$=param_value$(4) d$=param_value$(5)
C'est à dire que la variavle du Prog de dépard a$ peut être répartie en 4 nouvelles variables (a$,b$,c$,d$) dans le Prog qui recoit la transmission des paramètres. A nous deux on a fait avancer le shmilblick. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Probleme avec EXECUTE Sam 25 Juil 2009 - 20:25 | |
| Tu peux aussi reconstituer ta variable d'origine par - Code:
-
a$ = "" FOR i = 1 TO PARAM_NUMBER a$ = a$ + PARAM_VALUE$(i) + " " NEXT i | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Probleme avec EXECUTE Dim 26 Juil 2009 - 8:56 | |
| Ce qui me manque en programmation, c'est de l'imagination. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Probleme avec EXECUTE Dim 26 Juil 2009 - 22:19 | |
| Il faut certes un peu d'imagination et beaucoup de technique, et ne pas hésiter à parcourir le manuel pour découvrir des instructions qui facilitent bien la vie. On arrive certes à contourner la plupart des difficultés, mais on peut aussi découvrir qu'il y a une instruction qui fait le même boulot en une seule ligne. | |
| | | Contenu sponsorisé
| Sujet: Re: Probleme avec EXECUTE | |
| |
| | | | Probleme avec EXECUTE | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |