Attendre la fin d'execution d'une ligne de commande

ahmbr Messages postés 9 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 4 février 2008 - 1 févr. 2008 à 11:29
atilaOne Messages postés 1 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 27 juin 2008 - 27 juin 2008 à 17:24
Bonjour à tous,
Je suis entrain de faire un petit projet avec delphi.
je dois executer une ligne de commande ou un fichier batch, mettre la resultat dans fichier texte.
puis manupiler le fichier texte pur afficher la resultat que je veux.
mais j'ai un petit probleme c'est que le programme continue l'execution avant la fin de l'execution de la commande et la creation du fichier.//avec shellExecute sous l'api shellApi
j'ai beacoup cherché  sur le net et j'ai trouvé seulement la solution pour executer et attendre la fin d'execution d'un programme sous windows. mais mon probleme est que je dois exectuer une commande ms-dos.
est ce que vous avez une solution pour attendre la fin d'execution de la commande.
merci

8 réponses

OcHre Messages postés 44 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 26 avril 2008
1 févr. 2008 à 11:48
Salut, si le traitement n'est pas trés long j'opterais pour un
sleep, ce n'est pas vraiment élégant mais ça à le mérite de marcher.
Rions un peu en attendant la mort.
0
ahmbr Messages postés 9 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 4 février 2008
1 févr. 2008 à 12:04
Mais le temps de l'execution est variable il depend de l'ordinateur des arguments...
je ne sais pas combien de temps il me faut.
mais j'ai une autre idée : mettre l' execution de commande dans un autre programme.
mais comment je dois faire pour masquer l'application (le form et du barre de tache)
et aussi comment comment passer des argument entre deux programme en delphi.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 févr. 2008 à 12:47
CreateProcess
WaitForSingleObject
CloseHandle

ciao...
BruNews, MVP VC++
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 févr. 2008 à 15:01
c'est encore pour copier ou effacer des fichiers ?

ce serait bien d'avoir des details pour pouvoir te repondre correctement!


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ahmbr Messages postés 9 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 4 février 2008
1 févr. 2008 à 16:23
non c'est pour chercher des fichier :)
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
1 févr. 2008 à 18:09
Salut,
pourquoi faire appel à un fichier Batch alors

tu peux le faire en interne avec "FindFirst & FindNext" ou plus simplement avec un TListBox ou TComboBox

Avec un TListBox :
Var aDir : String;
Begin
 aDir := 'C:\*.*';
  ListBox1.Perform(LB_DIR,

    DDL_ARCHIVE Or
   DDL_DIRECTORY
Or
   DDL_DRIVES Or          // En fonctions des
besoins ...
    DDL_EXCLUSIVE Or

   DDL_HIDDEN Or         // retirer une ou plusieurs
    DDL_READONLY
Or      // de ces
options
    DDL_READWRITE Or

   DDL_SYSTEM,
    Integer(aDir));
End;
<center>Highlighted with Pas2HTML </center>
Avec un TComboBox :
  ComboBox1.Perform(CB_DIR,

    ...

    Integer(aDir));

 
@+
Cirec

<hr siz ="" />
0
ahmbr Messages postés 9 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 20:49
Merci.
Je ne l'ai pas encore tester mais ça devra macher
0
atilaOne Messages postés 1 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 27 juin 2008
27 juin 2008 à 17:24
Bonjour,

j'ai à peu de choses près le même problème.
Je veux exécuter depuis mon appli Delphi des scripts SQL lancés avec sqlplus d'Oracle.
Un série de script devant bien entendu s'exécuter dans l'ordre, et le second devant attendre la fin du premier pour commencer.

Merci pour vos idées,
Arne.
0
Rejoignez-nous