Commande exec

Commande exec - Delphi/Pascal - Programmation

Marsh Posté le 24-09-2003 à 14:08:07    

Salut.
Voilà, je me suis fait un menu graphique en turbo pascal pour lancer des applications DOS(ghost,etc...).
La partie graphique fonctionne à part qques petits détails.
Mais pas moyen de faire fonctionner exec.
Je fait ceci: exec(tabch[1],'');
** tabch[1] contient par exemple x:\ghost.exe
 
La commande exec est liée à la touche enter mais de ce coté là pas de prob j'ai vérifié.
 
Si qqun a une soluce.
 
ps: sur conseils zavisés d'un autre forum j'ai testé la bidouille {$m 4096,0,0} mais rien. :/
 
Merci d'avance.

Reply

Marsh Posté le 24-09-2003 à 14:08:07   

Reply

Marsh Posté le 24-09-2003 à 15:58:18    

Y a t'il moyen de faire autrement que d'utiliser exec ?

Reply

Marsh Posté le 24-09-2003 à 19:54:27    

:bounce:  euuuuu

Reply

Marsh Posté le 25-09-2003 à 01:32:06    

:hot:

Reply

Marsh Posté le 25-09-2003 à 08:31:46    

pas la peine de upper :  consulte ta documentation
 
je sais pas ce qu'il est est en pascal, mais j'aurais eu tendance d'échapper le \ -> \\ dans n'importe quel langage

Reply

Marsh Posté le 25-09-2003 à 13:59:34    

Désolé mais quand je me retrouve en deuxième page j'ai tendance à upper. :d
Sinon j'avais déjà consulté l'aide de TP sur exec(3 lignes) mais ça ne donne rien.
Le \\ ne fait pas de miracle non plus malheureusement. :/

Reply

Marsh Posté le 26-09-2003 à 17:38:55    

Taz a écrit :

pas la peine de upper :  consulte ta documentation
 
je sais pas ce qu'il est est en pascal, mais j'aurais eu tendance d'échapper le \ -> \\ dans n'importe quel langage


 
non en pascal pas la peine de doubler le \
sinon "exec" g connait pas, d'habitude pour lancer un prog j'utilise ShellApi


Message édité par skelter le 26-09-2003 à 17:44:49
Reply

Marsh Posté le 26-09-2003 à 23:26:12    

Taz a écrit :


 
je sais pas ce qu'il est est en pascal, mais j'aurais eu tendance d'échapper le \ -> \\ dans n'importe quel langage


 
En Pascal y a pas de caractère d'échappement :o
On met les caractèrs spéciaux hors des chaînes, genre 'ligne1'#13#10'ligne2'
ça a des avantages et des inconvénients :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-09-2003 à 23:27:16    

skelter a écrit :


sinon "exec" g connait pas, d'habitude pour lancer un prog j'utilise ShellApi


 
plutôt ShellExecute tu veux dire [:figti] ShellAPI étant le nom de la unit contenant cette fonction.
Mais s'il utilise Turbo Pascal, ça veut dire qu'il utilise un compilateur DOS, ça va pas être évident pour accéder aux API Windows [:dawa]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-09-2003 à 23:43:39    

si tu lances un exe, ca devrait marcher tel quel :??:
 
par contre si tu lances des commandes dos ou un batch (.cmd, .bat) il faut que lances command.com avec en params le batch/la commande a executer
si mes souvenirs sont bons, ca devrait etre qqchose comme ca:

exec(getenv('COMSPEC'),' /C C:\monbatch.bat);


 
au pire, essaye de lancer ton .exe comme un batch , en faisant

exec(getenv('COMSPEC'),' /C C:\monprog.exe);


ou

exec(getenv('COMSPEC'),' /C start C:\monprog.exe);


 
 
tu peux aussi essayer d'afficher le resultat de la fonction doserror() apres l'appel a exec(), ca te dira au moins si ca s'est bien passé ou pas... (Cf l'aide de TP pour les codes)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-09-2003 à 23:43:39   

Reply

Marsh Posté le 27-09-2003 à 02:17:34    

:jap:  
J'essairai ça ce soir et je vous dirait si ça marche.
Parce que là dodo.

Reply

Marsh Posté le 27-09-2003 à 10:00:09    

antp a écrit :


 
En Pascal y a pas de caractère d'échappement :o

alors occupe toi des tes boolays au lieu de les laisser upper 4x par jour  :o

Reply

Marsh Posté le 28-09-2003 à 18:05:03    

Désolé mais ça ne fait rien. :/
Tant pis je continue à chercher.
Merci quand même. :)
Sauf pour taz le pitbull  :na:  :na:

Reply

Marsh Posté le 29-09-2003 à 06:33:14    

Bon ça avance. :)
J'ai creé un autre prog pour tester le exec séparément.
Ceci fonctionne:


{$M 8192,0,0}
uses dos;
 
begin
swapvectors;
exec(Getenv('comspec'), ' /c c:\windows\notepad.exe');
swapvectors;
writeln(doserror);
readln;
end.


Par contre si je l'intègre dans mon prog principal le {$m 8192,0,0} pose problème car TP me dit alors que graph n'est pas initialisé.
Mais si je l'enlève bah le graph passe mais plus le exec. :(
 
Qqun aurait il une idée ?
 
Ps: si c'est juste pour me traiter de boulay inutile de poster. :d

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed